Sea*_*ene 12 server backup rsync
我正在使用 ubuntu 服务器 12.04,现在我想使用 rsync 备份一些文件,这里是一个尝试:
rsync -aAX $HOME/Documents/* $HOME/Backups/TEST --exclude={$HOME/Documents/another/*,$HOME/Documents/temp/*}
Run Code Online (Sandbox Code Playgroud)
如您所见,我想将文件夹$HOME/Documents中的所有文件备份到文件夹$HOME/Backups/TEST,但排除文件夹another和temp中的文件。但是我失败了,rsync 仍然复制了两个排除文件夹中的文件:
ls $HOME/Backups/TEST/another
test
Run Code Online (Sandbox Code Playgroud)
test是文件夹another中的一个文件,虽然我在 rsync 中排除了该文件,但它也被复制了,为什么?如何让这些文件被实际排除?
miv*_*ivk 12
您可能会发现.rsync-filter
在源目录中添加文件并使用该-F
选项更容易。
从手册页:
-F : -F 选项是此规则的简写 [...]:
Run Code Online (Sandbox Code Playgroud)--filter='dir-merge /.rsync-filter'
这告诉 rsync 查找已经散布在层次结构中的每个目录的 .rsync-filter 文件,并使用它们的规则来过滤传输中的文件。
例如:在 $HOME/Documents/.rsync-filter
# you can add comments in filter files
- /another/
- /temp/
Run Code Online (Sandbox Code Playgroud)
取而代之的是-
,您也可以写出整个单词exclude
。
现在你可以
rsync -aAX -F $HOME/Documents/ $HOME/Backups/TEST/
Run Code Online (Sandbox Code Playgroud)
Tak*_*kat 11
您的 rsync 命令有几个问题(有关过滤规则的详细说明,另请参阅rsync 联机帮助页)。
--exclude
对于任何给定的模式,我们都需要一个命令。 对于您的示例,以下语法将起作用:
rsync -avAX --exclude=another/ --exclude=temp/ ~/Documents/ ~/Backups/TEST
Run Code Online (Sandbox Code Playgroud)
请注意,如果排除模式以/
它结尾,则它指的是一个目录。如果两者都省略,则具有该名称的文件和目录将被排除。将其替换为通配符*
以排除名称中包含该字符串的所有文件或目录。
归档时间: |
|
查看次数: |
32611 次 |
最近记录: |