如何从两个服务器上存在的rsync中排除目录?

时间:2012-05-10 21:01:21

标签: linux bash rsync

这是我的文件结构:

Server_A                  Server_B
==============            ==============
/path/dir1/               /path/dir1/
           logA.txt                  logA.txt
           logB.txt                  logB.txt
/path/dir2/               /path/dir2/
           fileC.txt                 fileC.txt
           fileD.txt                 fileC.txt

我需要rsync路径/ dir2从服务器A到B,但不是路径/ dir1。

我的rsync命令如下所示:

rsync -arv --exclude '/dir1' /path/ root@server_b:/path

但是每次我运行它时结果都会在打印输出中显示dir1:

sending incremental file list
./
dir1/
dir1/logA.txt
dir1/logB.txt
sent 52147 bytes  received 23342 bytes  14405.50 bytes/sec
total size is 215619123  speedup is 2851.02

我错过了什么?

1 个答案:

答案 0 :(得分:2)

我不相信你已经准确地转录了你正在运行的命令。如果我有一个如下所示的目录/tmp/src

/tmp/src/
/tmp/src/dir1
/tmp/src/dir1/file1
/tmp/src/dir1/file2
/tmp/src/dir2
/tmp/src/dir2/file1
/tmp/src/dir2/file2

我可以将它同步到另一台服务器 - 并排除/tmp/src/dir1 - 就像这样:

rsync -av --exclude=/dir1 /tmp/src/ server:/tmp/dst/

跑步看起来像这样:

sending incremental file list
created directory /tmp/dst
./
dir2/
dir2/file1
dir2/file2

这似乎与您在问题中描述的内容完全一致。我正在使用rsync 3.0.8版。我建议仔细检查你的实际rsync命令行和文件系统。如果你没有看到任何明显的东西,你可以发布你正在运行的实际命令,以及一个顶级目录列表(除非它很大)?