我正在写一个简短的剧本。一个功能是同步两个文件夹。现在,我有两个变量,其中包含两个不同文件夹的目录:DIRECTORY_1
和DIRECTORY_2
。在两个文件夹中都有文件和其他文件夹。我需要同步这些文件夹以包含两个文件夹中的所有文件。例如:
DIRECTORY_1
我有file1,file2,file3和folder1 在DIRECTORY_2
我有file4,file5,file6和folder2
我需要评论,之后我会在两个目录files1-6和folders1-2中。
我正在尝试rsync命令,但它无法正常工作。
答案 0 :(得分:3)
$ mkdir dir1
$ mkdir dir2
$ touch dir1/file1 dir1/file2 dir1/file3
$ mkdir dir1/folder1
$ touch dir2/file4 dir2/file5 dir2/file6
$ mkdir dir2/folder2
$ tree
.
|-- dir1
| |-- file1
| |-- file2
| |-- file3
| `-- folder1
`-- dir2
|-- file4
|-- file5
|-- file6
`-- folder2
$ rsync -a dir1/ dir2
$ tree
.
|-- dir1
| |-- file1
| |-- file2
| |-- file3
| `-- folder1
`-- dir2
|-- file1
|-- file2
|-- file3
|-- file4
|-- file5
|-- file6
|-- folder1
`-- folder2
我猜rsync -d dir2/ dir1
会是下一个吗?
答案 1 :(得分:1)
可能不是最有效的,但这可以解决问题:
comm <(ls DIR1) <(ls DIR2) -23 | while read f; cp -r DIR2/$f DIR1; done
comm <(ls DIR1) <(ls DIR2) -13 | while read f; cp -r DIR1/$f DIR2; done
答案 2 :(得分:0)
使用统一,它是一个真实的文件夹同步器(例如Dropbox或Mega做到了)。
https://www.cis.upenn.edu/~bcpierce/unison/
使用brew安装Mac:
brew install unison
我使用了以下命令:
unison -auto /path/folder1 /path/folder2
此外,对我来说最重要的一点是,如果2个文件具有相同的名称,它将替换为最新版本。