目前,我仅RSync-ing之Directories
类的:
* * * * * rsync -avz /var/www/public_html/images root@<remote-ip>:/var/www/public_html
那么,我rsync
该如何处理一个文件/var/www/public_html/.htaccess
呢?
Answers:
您可以使用与目录相同的方法来执行此操作,但是您将文件名的完整路径指定为源。在您的示例中:
rsync -avz --progress /var/www/public_html/.htaccess root@<remote-ip>:/var/www/public_html/
如果相对于源目录和目标目录的根目录,文件路径中的所有目录均已存在,则Michael Place的答案非常有用。
但是,如果要使用此源路径同步文件怎么办:
/ source-root / a / b / file
到具有以下目标路径的文件:
/ target-root / a / b / file
并且目录a和b不存在?
您需要运行如下的rsync命令:
rsync -r --include="/a/" --include="/a/b/" --include="/a/b/file" --exclude="*" [source] [target]
到目前为止,有两个答案不太正确,它们将得到多个文件,而另一个则不是那么简单,这是IMO的一个简单答案。
以下内容仅获取一个文件,但是您必须使用mkdir创建dest目录。这可能是最快的选择:
mkdir -p ./local/path/to/file
rsync user@remote:/remote/path/to/file/ -zarv --include "filename" --exclude "*" ./local/path/to/file/
如果/ remote / path中只有一个文件实例,那么执行以下操作,rsync可以为您创建目录。这可能会花费更多时间,因为它会搜索更多目录。另外,它将为/ remote / path中不在./local中的目录创建空目录。
cd ./local
rsync user@remote:/remote/path -zarv --include "*/" --include "filename" --exclude "*" .
请记住,--include和--exclude的顺序很重要。