不带递归文件夹的 Linux rsync

不带递归文件夹的 Linux rsync

我有一个文件夹层次结构,想要将一个文件夹的文件内容同步到另一个文件夹。

因此,只需将 dirA rsync 到 dirB 即可

但是,如果没有递归元素,它就不会包含文件夹中的文件。

dave:/tmp# mkdir dirA
dave:/tmp# mkdir dirB
dave:/tmp# touch dirA/tmp.txt
dave:/tmp# rsync --stats dirA/ dirB/
skipping directory .

Number of files: 0
Number of files transferred: 0

我可以

dave:/tmp# rsync --stats dirA/* dirB/

Number of files: 1
Number of files transferred: 1

但是如果有数万个文件,参数列表可能会变得太长。

同步两个文件夹的内容(没有子文件夹)似乎是一个相当简单的操作,但我显然遗漏了一些东西?

答案1

这有帮助吗?手册页的 -d 和 -m 选项:

   -d, --dirs                  transfer directories without recursing 
   -m, --prune-empty-dirs      prune empty directory chains from file-list

然后运行...

mkdir dirA
mkdir dirB
mkdir dirA/dirAA
touch dirA/fileA
touch dirA/dirAA/fileAA
rsync --stats -dm dirA/ dirB/

输出:

Number of files: 3 (reg: 1, dir: 2)
Number of created files: 1 (reg: 1)
Number of deleted files: 0
Number of regular files transferred: 1
Total file size: 0 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 123
Total bytes received: 31

结果:

ls dirB
fileA

相关内容