rsync 排除目录和所有子目录

rsync 排除目录和所有子目录

我尝试使用它rsync来同步我的一些数据,但无法排除我想要的数据。这是我的目录树:

tst/
├── st1
│   ├── st11
│   │   └── txt.text
│   ├── st12
│   ├── st13
│   ├── st14
│   └── st15
├── st2
├── st3
├── st4
└── st5

我想排除目录st1及其所有子目录和文件。

我尝试使用这个Linuxize教程没有运气,这些是我尝试过的命令:

rsync -auvzhe --exclude 'tst/st1/' --exclude 'tst/st1/*/' --exclude 'tst/st1' tst  /home/yaodav/Desktop/shared_folder/BU/

rsync -auvzhe --exclude 'tst/st1/' --exclude 'tst/st1/*/' tst  /home/yaodav/Desktop/shared_folder/BU/

我怎样才能获得不包括的副本st1

答案1

您几乎已经完成了,但一个微妙的错误让您措手不及。该-e标志需要一个参数,表示连接到远程主机的命令。在您的例子中,没有远程主机,因此该参数从未使用过,甚至从未验证过。不幸的是,下一个参数是--exclude,这意味着rsync将您'tst/st1/'视为要复制的目录树,而不是要排除的目录树。

场景(设置目录树和示例文件)

cd /tmp
mkdir -p tst/st1/st11 tst/st{2,3,4,5}
touch tst/st1/st11/txt.text

ls -R tst

复制除st1目录及其内容之外的所有内容

rsync --dry-run -auv --exclude '/tst/st1/' tst /home/yaodav/Desktop/shared_folder/BU/

示例运行

sending incremental file list
created directory dst
tst/
tst/st2/
tst/st3/
tst/st4/
tst/st5/

sent 178 bytes  received 62 bytes  480.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)

--dry-run当你看到它正在做你想要的事情时删除

相关内容