我在外部 HDD 上有一个文件夹 A,比如说 HDD-A,而在外部 HDD-B 上有一个文件夹 B。
有没有办法自动同步两个文件夹?实时同步或至少每天同步一次
答案1
我用rsync
对于这样的任务:
rsync -a "/path/to/hdd1/dir-a" "/path/to/hdd2/dir-b"
你可以添加 cron 任务要安排任务,我建议将rsync
的输出重定向到日志文件。例如每 10 分钟运行一次并将输出保存在 中~/logs/rsync.log
:
*/10 * * * * rsync -a "/path/to/hdd1/dir-a" "/path/to/hdd2/dir-b" >~/logs/rsync.log
如果你更喜欢 GUI,你可以使用grsync
:
当您根据需要进行配置后,按Alt+R显示相应的命令行。
答案2
齐奏
您可以使用齐奏保持两个路径双向同步。与 rsync 等简单程序相比,使用 unison 的好处在于它具有内置冲突解决处理功能。例如,如果pathA/foo.txt
和pathB/foo.txt
都发生了变化,程序需要知道您想要哪个文件。
unison 的基本用法是:
$ unison -auto path/to/A path/to/B
然后它将尝试保持下面的结构path/to/A
同步path/to/B
。您还可以添加-batch
标志以使其以非交互方式工作,尽管冲突不会通过这种方式得到解决。
Unison 会保存每个同步对的状态,因此它会记住您对冲突解决的偏好。针对不同的使用情况,有相当多的选项可供选择。
它在 Ubuntu 中以软件包形式提供unison
。GUI 版本也以 形式提供unison-gtk
。
警告与所有自动同步解决方案一样,请先在测试环境中熟悉该程序。还请仔细阅读文档。很容易搞砸并最终覆盖错误的文件。
扩展手册:
有关的:
答案3
我可以推荐免费文件同步。它工作快速且出色。
我使用它来进行 HDD、USB 闪存、SSHFS、Samba 共享和/或本地文件夹之间的同步。
它还具有实时同步模式(称为实时同步)。
您可以作为 FlatPak 安装:
sudo apt-get install flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub org.freefilesync.FreeFileSync
它与 Meld ( ) 配合使用效果很好sudo apt-get install meld
。
您需要打开 FreeFileSync 选项 (工具→选项),然后在第一行添加以下内容:
| Description | Command line |
| Compare files in Meld | meld "%item_path%" "%item_path2%" |
如截图所示: