我想备份我的 Ubuntu 系统,并且我有两个分区需要关心:一个是/
,另一个是/home
。
我可能想要备份/
。它甚至不是那么大,所以我可以把它放在我的 SD 卡上,同时又足够灵敏,让我想要拥有它的图像(这就是我此刻尝试使用 rsync 的原因)。
关于/home
,它有许多我不太关心的子目录,所以我可能不会包括它们,但我想关心那里的文件,例如,,,.bash_history
等等。.bashrc
.face
因此,我想在包含文件的同时排除所有子目录/home
。我该如何实现呢?
--exclude "*/"
不起作用。"/*/"
,,"/**/"
没有--include "*" --exclude */
显示我想要的内容。至少它复制了源文件夹,但没有复制其中的任何内容。
答案1
尝试这个命令:
rsync -a -f"- */" -f"+ *" /home/user/ destination/
man rsync
-f, --filter=RULE add a file-filtering RULE
*
包含所有文件并排除目录的规则*/
使用常规副本的另一种方法cp
cp /home/usr/* /destination
你可以使用重定向摆脱有关目录的错误
cp /home/usr/* /destination 2>/dev/null
这只会复制你家里面的文件,而不会复制目录
答案2
如果您想使用--include
和--exclude
参数来解决这个问题,您应该改变它们的顺序:首先排除您想要的,然后包含所有内容。我通常使用以下命令执行此操作:
rsync -vazhP path/to/source path/to/dest --exclude '*/*/' --include '*'
答案3
尝试这个:
rsync -r --exclude='*/' source/ destination/
来源:https://lists.samba.org/archive/rsync/2008-September/021746.html
答案4
默认情况下,rsync
不复制目录。也许您正在使用标志-a
。如果是这种情况,请注意根据手册页,-a
相当于-rlptgoD
,因此如果不想递归,只需使用-lptgoD
。