我想使用 cygwin 和 rsync 备份我的 Windows 主目录:
rsync.exe -vrt --delete --exclude=AppData "/cygdrive/C/Users/user1/" "/cygdrive/D/backup/"
正如你所看到的,我排除了应用程序数据目录。
是否可以将我的 Firefox 书签包含在以下路径中?
AppData/Roaming/Mozilla/Firefox/Profiles/*/places.sqlite
星号代表配置文件名称。这是未知的,因为 Firefox 会在那里生成随机名称。
也许可以使用带有 --exclude-from 的排除脚本?
我知道可以复制地点.sqlite使用 power shell 复制到另一个文件夹,然后备份该文件夹。
但也许直接使用 rsync 是可能的。
答案1
这几乎是重复的rsync:使用过滤器排除顶级目录,但包含其一些子目录。
您需要包含AppData
用于搜索的文件夹树,您可以找到该places.sqlite
文件夹,但排除除该文件之外的所有内容。
rsync --dry-run -av --prune-empty-dirs \
--include '/AppData/Roaming/Mozilla/Firefox/Profiles/*/places.sqlite' \
--include '*/' \
--exclude '/AppData/***' \
'/cygdrive/C/Users/user1/' '/cygdrive/D/backup/'
停止--prune-empty-dirs
目标被填充目录,否则这些目录将保持为空,因此rsync
仅创建保存正在复制的文件所需的目录。 (有点奇怪,这不是默认操作,但事实并非如此。)
在我的系统上,places.sqlite
是 underProfiles/*
而不是Profile/*
,所以我相应地调整了我的建议命令。如您所料,--dry-run
当您对结果满意时将其删除。
答案2
这是另一个决定,制作符号链接:将places.sqlite移动到rsync包含范围中的某个位置,例如c:\places\*\places.sqlite
mklink c:\places\*\places.sqlite AppData\Roaming\Mozilla\Firefox\Profile\*\places.sqlite
甚至对于目录,语法为:
mklink /d <Link> <Target>
结果,rsync 将复制所有需要的数据,并跳过其他数据。
答案3
首先创建一个包含以下内容的 include.txt 文件:
+ AppData/Roaming
+ AppData/Roaming/Mozilla
+ AppData/Roaming/Mozilla/Firefox
+ AppData/Roaming/Mozilla/Firefox/Profiles
+ AppData/Roaming/Mozilla/Firefox/Profiles/*/places.sqlite
- AppData/*
- AppData/Roaming/*
- AppData/Roaming/Mozilla/*
- AppData/Roaming/Mozilla/Firefox/*
- AppData/Roaming/Mozilla/Firefox/Profiles/*/*
然后在rsync中使用它并带有参数--include-from=include.txt
此解决方案不需要 --prune-empty-dirs,因此您也可以备份空目录。此外,也无需创建链接。