当前位置: 首页 > news >正文

重定向文件访问(Redirect file access)

重定向文件访问

重定向文件访问是指通过修改文件系统的路径,使对某个文件或目录的访问请求被转到另一个文件或目录。这在系统管理、测试和开发中非常有用,因为它允许您在不修改应用程序或服务配置的情况下,改变文件的实际存储位置。

proot

proot 是一个用户空间工具,它允许用户在不需要管理员权限的情况下执行许多与系统相关的操作。它的功能类似于 chroot 或者容器技术,但是更加轻量化和灵活。proot 通过模拟一些系统调用(如文件系统、进程隔离等),实现了隔离和重定向,从而允许用户在受限的环境中运行应用程序。

proot 的主要功能:

  • 文件系统重定向:可以将访问的路径重定向到其他位置。
  • 用户命名空间模拟:在没有管理员权限的情况下运行模拟的 root 用户。
  • 隔离环境:创建一个隔离的执行环境,类似于 chroot 或者容器。

对文件重定向

proot -b src/1.txt:dst/1.txt /bin/bash

在这里插入图片描述

对目录重定向

# install:sudo apt install proot
# -b, --bind=<src>:<dst>:将宿主文件系统中的 <src> 目录绑定到 proot 环境中的 <dst> 目录。
proot -b src/:dst/ /bin/bash

在这里插入图片描述

需要注意的是proot只会在当前shell中起作用。

symlink

符号链接(symlink),也称为软链接,是文件系统中的一种文件类型,它指向另一个文件或目录。符号链接类似于快捷方式,它让你可以通过不同路径访问同一个文件或目录。符号链接的主要优势在于它们灵活且不受限于文件系统边界。

对文件重定向

ln -s ~/src/1.txt  dst/link1.txt

在这里插入图片描述

对目录重定向

ln -s ~/src/  dst/src

在这里插入图片描述

需要注意的是需要软链接的文件或目录需要提供绝对路径,删除软链接并不会操作源文件。

mount --bind

mount --bind 是 Linux 中用于绑定挂载的一个选项。它允许你将一个文件或目录绑定到另一个位置,使得对目标位置的访问实际上是对源位置的访问。这个功能非常有用,尤其是在需要重定向文件或目录访问的时候。当你使用 mount --bind 将源目录绑定到目标目录时,目标目录实际上会成为源目录的一个镜像。任何对目标目录的操作(如读、写、执行等)都会直接作用于源目录。

使用 mount --bind 的典型场景

  • 重定向文件或目录访问:将一个路径重定向到另一个路径,避免移动文件或目录。
  • 共享数据:在不同的目录之间共享同一组文件或目录内容。
  • 调试和测试:在不同的路径上测试相同的数据集,而无需复制数据。

对文件进行重定向

mount --bind /home/fakerth/src/foo dst/bar

在这里插入图片描述

取消挂载:

umount dst/bar

对目录进行重定向

mount --bind /home/fakerth/src/ dst/

在这里插入图片描述

取消挂载:

umount dst/

注意,mount --bind重启后会失效,如果想在当前shell中进行mount --bind,可以在mount --bind之前进行

unshare -m

unshare

unshare 是一个 Linux 命令,用于创建一个新的命名空间,并在这个新的命名空间中执行指定的命令。命名空间是 Linux 内核提供的一种机制,用于隔离进程间的资源,如文件系统、网络、进程等。

在这里插入图片描述

http://www.lryc.cn/news/369812.html

相关文章:

  • 隐私计算(1)数据可信流通
  • 果汁机锂电池充电,5V升压12.7V 升压恒压芯片SL1571B
  • 多个线程多个锁:如何确保线程安全和避免竞争条件
  • Linux-笔记 设备树插件
  • 【排序算法】总结篇
  • 鸿蒙开发文件管理:【@ohos.fileio (文件管理)】
  • 硬件工程师学习规划
  • esp32 8行代码实现蓝牙音响
  • 注册用户如何防止缓存穿透?
  • Presto基础知识
  • Ajax + Easy Excel 通过Blob实现导出excel
  • Qt+qss动态属性改变控件状态切换的样式
  • 纷享销客安全体系:安全运维运营
  • 富瀚微FH8322 ISP图像调试—BLC校正
  • 什么是大型语言模型 ?
  • RocketMq详解:二、SpringBoot集成RocketMq
  • 【源码】二开版微盘交易系统/贵金属交易平台/微交易系统
  • React@16.x(26)useContext
  • Vue2学习(04)
  • Python中columns()函数
  • Vue3 使用 vue-clipboard3 实现一键复制
  • 人机环境生态系统智能的流动性
  • 实现开源可商用的 ChatPDF RAG:密集向量检索(R)+上下文学习(AG)
  • 对待谷歌百度等搜索引擎的正确方式
  • pikachu靶场通关全流程
  • 实现k8s网络互通
  • diffusers 使用脚本导入自定义数据集
  • 【Android面试八股文】请讲一讲synchronized和ReentrantLock的区别
  • springmvc 全局异常处理器配置的三种方式深入底层源码分析原理
  • MySQL 8.0 安装、配置、启动、登录、连接、卸载教程