我正在处理在过去24小时内修改过的备份文件的增量备份。我试图避免复制所有目录,从树命令可以看到。也许正是这样做的cpio。不知道忽略所有文件夹的替代方案。 备份工作完全正常,但它只是复制所有目录,从根目录到文件的目的地。我该怎么做才能复制整个$ bksource中的文件而不是目录。
#!/bin/bash
bkdest="/home/user/backup/incremental"
bksource="/home/user/Documents"
target=${bkdest}/bk.inc.$(date +%Y_%m_%d_%H_%M_%S)
mkdir -p $target
find "$bksource" -type f -mtime 0 | cpio -mdp "$target"
这是备份后的树。我看到所有过去24小时内修改过的文件,但它带来了文件夹目录,但只备份文档中最后修改过的文件,这是好的。
[user@localhost bk.inc.2015_08_02_21_56_41]$ tree
.
└── home
└── user
└── Documents
├── newinc1
├── newinc2
└── newinc3
如果有人有解决方案,我会非常感激。谢谢!
答案 0 :(得分:1)
rsync -av --exclude='path1/to/exclude' --exclude='path2/to/exclude' bksource bkdest
请注意,使用source和source /是不同的。尾部斜杠表示将文件夹源的内容复制到目标。如果没有尾部斜杠,则表示将文件夹源复制到目标位置。
或者,如果要排除许多目录(或文件),可以使用--exclude-from=FILE
,其中FILE是包含要排除的文件或目录的文件的名称。
--exclude
也可能包含通配符,例如--exclude=*/.svn*
<强>更新强> 要仅使用绝对路径传输从find命令获取的文件列表,它可能类似于:
rsync -av --files-from=/path/to/files.txt / /destination/path/
您可以使用--dry-run
来测试文件