我想在 Ubuntu 的两个不同位置拥有同一个文件夹。如果我在其中一个位置更新某些内容,则另一个位置也应更新。
我怎样才能实现它?
答案1
正如评论中指出的那样,但这不是正确的答案:
在许多情况下,符号链接是最简单的解决方案。
您可以在命令行上轻松创建它们(使用带参数ln
的命令-s
)。您也可以使用 GUI 轻松创建它们:大多数文件浏览器(nautilus,...)允许您在按住修饰键(CTRL+SHIFT)的同时使用拖放操作(如移动文件)创建符号链接。
命令行使用示例:
$ mkdir first_dir
$ ln -s ./first_dir ./second_dir
$ ls
first_dir second_dir
$ touch ./first_dir/test_1
$ touch ./second_dir/test_2
$ ls ./first_dir
test_1 test_2
$ ls ./second_dir
test_1 test_2
答案2
使用绑定挂载。
假设你有一个现有目录/home/pandey/original
,并且想要镜子这样/home/pandey/mirror
,您在其中一个程序中执行的所有操作也会自动在另一个程序中完成。
这不需要在两个目录之间进行任何同步或复制。绑定挂载只是另一个看法到原始目录,在一个目录中发生的事情也会在另一个目录中发生。
(以您的用户身份)创建新目录
/home/pandey/mirror
:mkdir /home/pandey/mirror
绑定安装将原始目录移至新创建的路径。这需要 root 访问权限:
sudo mount --bind /home/pandey/original /home/pandey/mirror
享受。
要撤消此操作,只需
sudo umount /home/pandey/mirror
rmdir /home/pandey/mirror
另请参阅此问题及其在 stackexchange 上的出色自我回答关于绑定安装。
答案3
你可以通过设置 crontab 作业来完成此操作:
- 打开终端并输入
crontab -e
- 按下
i
以激活 vim 编辑器的插入模式。
您可以在此处输入要执行的命令,这样您就可以将文件夹中的所有文件复制到另一个文件夹中。例如,如果您想将所有文件复制到,/home/user/folder_name
则应/home/user/public
在crontab
文件中插入此命令:
rsync /home/user/folder_name -r /home/user/public
这将在所需的时间间隔内复制所有文件。如果您想在每天 21:30 复制所有文件,您的编辑应该是:
30 21 * * * rsync /home/user/folder_name -r /home/user/public
有关更多信息定时任务看这里或使用man crontab
。