在我的本地计算机上,我有几个插件,在服务器上我有一些插件。
本地机器:
~/wp-content/plugins/plugin1 ~/wp-content/plugins/plugin1/includes ~/wp-content/plugins/plugin2 ~/wp-content/plugins/plugin3 ~/wp-content/plugins/plugin4 ~/wp-content/plugins/plugin5
远程机器:
~/wp-content/plugins/plugin1 ~/wp-content/plugins/plugin1/includes ~/wp-content/plugins/plugin3 ~/wp-content/plugins/plugin5
我可以使用什么rsync命令来更新远程目录中的所有文件,但只有它们存在?为此,我想将plugin1,plugin1 / includes,plugin3和plugin5同步 - 包含所有文件和目录 - 但不是plugin2或plugin4。基本上,如果存在单个rsync命令,则更新所有插件。
答案 0 :(得分:1)
仅使用一个rsync命令就不可能完全实现这一点。如果您只想更新远程文件,但又不想添加 new 文件,则可以使用以下命令:
rsync -rP --existing source/ user@remote:target/
这根本不会创建新文件或目录,而是更新不同的文件或目录。
编辑:也许你可以这样做(假设GNU找到,如果BSD / OS X:用深度替换maxdepth):
#!/bin/bash
REMOTE_TARGET_DIR=/some/path
REMOTE_DIRS=$(ssh user@remote "find $REMOTE_TARGET_DIR -maxdepth 1 -type d -printf '%P\n' | sed 1d"
for DIR in $REMOTE_DIRS
do
rsync -rP "$DIR" "user@remote:$REMOTE_TARGET_DIR/"
done
警告:我没有对此进行测试,您可能需要在rsync(干运行)中添加“-n”以查看会发生什么。