rsync
我正在尝试通过以下方式对服务器进行完整的文件系统备份本指南。我正在使用以下命令:
rsync -aAXH --progress --delete --stats --exclude={\
"/dev/*",\
"/proc/*",\
"/sys/*",\
"/tmp/*",\
"/run/*",\
"/mnt/*",\
"/media/*",\
"/lost+found"}\
/* \
newserver:/mnt/oldserver-backup
但是,它仍然备份文件夹/media/x
,导致目标中没有足够的空间。如何纠正这个问题?
答案1
该--exclude={x,y,z}
构造仅在 bash 中有效,并且需要在一行上且没有空格,只有这样 bash 才能正确扩展它。
我建议将列表放在一个单独的文件中并使用--exclude-from=file
,或者按照 megahallon 建议的操作并自己重复 --exclude= 选项部分。
另请注意,您通常不希望/*
作为您的来源;让 rsync 负责递归,所以只需指定/
.这样 / 中的点文件也会被复制。我还总是在目标目录中添加尾部斜杠以防止出现意外;一个值得养成的好习惯。
答案2
从rsync
手册页
Note also that the --filter, --include, and --exclude options take one
rule/pattern each. To add multiple ones, you can repeat the options on
the command-line, use the merge-file syntax of the --filter option, or
the --include-from/--exclude-from options.
因此,在您的情况下,您可能只想对每个目录重复 --exclude 。