我试图排除目录 cache/ 中的所有文件(某些特定文件除外)。此外,我想备份源中的所有其他文件。
源目录的内容:
backup-test/
├── cache
│ ├── adodb
│ │ ├── .htaccess
│ │ ├── index.html
│ │ ├── test-adodb-1.html
│ │ ├── test-adodb-2.html
│ │ └── test-adodb-3.html
│ ├── .htaccess
│ ├── test-cache-1.html
│ ├── test-cache-2.html
│ └── test-cache-3.html
├── .htaccess
├── test-root-1.html
├── test-root-2.html
└── test-root-3.html
cache/
我想要备份且不应排除的文件:
cache/index.html
cache/adodb/.htaccess
我的命令:
rsync -av --delete \
--include "cache/index.html" \
--include "cache/adodb/.htaccess" \
--exclude "cache/*" \
-e ssh "$SSH_REMOTE":"$BACKUP_SOURCE" "$BACKUP_DEST"
输出:
receiving incremental file list
backup-test/
backup-test/.htaccess
backup-test/test-root-1.html
backup-test/test-root-2.html
backup-test/test-root-3.html
backup-test/cache/
sent 174 bytes received 431 bytes 1,210.00 bytes/sec
total size is 35 speedup is 0.06
但它并没有像我预期的那样工作。Rsync 仅备份空的缓存/目录,而不备份我包含的文件。我该怎么办?
答案1
我找到了解决方案。我希望这可以帮助您节省太多时间。
首先,您可以创建一个文件(include.txt),该文件将在include-from中使用它,您可以在其中添加以下行并保存它:
+ index.html
+ adodb*
+ adodb/.htaccess
- *
然后,您可以使用此 rsync 命令来备份仅包含 include.txt 中提到的文件并排除所有内容:
引用
rsync -ruvv --rsh=ssh --include-from=include.txt remoteSrv:/cache/$BACKUP_DEST