![Rsync ssh 包含和排除](https://linux22.com/image/18201/Rsync%20ssh%20%E5%8C%85%E5%90%AB%E5%92%8C%E6%8E%92%E9%99%A4.png)
这是我当前的 rsync shell 脚本
上传.sh
SOURCEDIR=/Users/thomas/sites/dreamhost/
DESTDIR=******@reggi.com:/home/thomasreggi/sites/
##rsync -avzL --delete --include '*/' --include-from=list.txt --exclude '*' $DESTDIR $SOURCEDIR
SOURCEDIR=/Users/thomas/sites/dreamhost/
DESTDIR=******@reggi.com:/home/thomasreggi/sites/
rsync -avzL --delete --exclude=".DS_Store" --exclude-from=list.txt $SOURCEDIR $DESTDIR
列表.txt
reggi.com/assets/dailybooth/img/original/
reggi.com/assets/dailybooth/img/spritesheets/
reggi.com/assets/dailybooth/sprite.css
reggi.com/assets/thumb/cache/
reggi.com/wordpress/wp-content/plugins/
reggi.com/wordpress/wp-content/uploads/
我在这里试图完成的是列表目录的 rsync 下载,然后上传除列表目录之外的所有内容。第二个脚本有效并避免了列表文件,但第一个脚本没有完全执行我想要的操作。如果我将 ** 附加到目录末尾,我就可以使用它,但我不确定这是否适用于第二个脚本。我正在寻找执行此操作的最佳方法。
答案1
如果您有足够新的 rsync 版本(至少 2.6.7),那么您可以使用reggi.com/assets/dailybooth/img/original/***
in list.txt
,等等。然后你的两个命令都会起作用。我认为没有比这更笨拙的方法了。您可能想添加--prune-empty-dirs
到第一个命令。
我质疑你的一般工作流程。向一个方向复制特定目录而向另一个方向复制其余目录是相当奇怪的。我建议安排两侧具有相同的内容,并在任何一侧进行更改时执行双向同步。双向同步的首选工具是齐奏。