我无法让 rsync 尊重我的.rsync-filter
文件;我想这是因为我没有正确理解它们是如何工作的。
基本上,我在我的文件夹和文件中创建了一个过滤器$HOME
,具有相同的名称但内容不同,位于我想要同步的不同目录中。我的主目录中的过滤器文件似乎(在某种程度上)工作,但另一个似乎无法正常工作。
这是命令rsync -auzvrR --no-l --no-H --filter='dir-merge /.rsync-filter' --exclude='venvs' --exclude='from_git' $HOME /mnt/backups/obk/ --dry-run > $HOME/Documents/rsync_results/home.txt
,这是我的主目录中的过滤器文件:
# rsync filter for /home dir
+ /[Dd]ocuments
+ /[Dd]ocuments/***
+ /[Dd]ownloads
+ /[Dd]ownloads/***
+ /[Mm]usic
+ /[Mm]usic/**
+ /[Pp]ictures
+ /[Pp]ictures/***
+ /[Vv]ideos
+ /[Vv]ideos/***
+ /.anacron
+ /.anacron/***
+ /.bash_aliases
+ /.bashrc
+ /.blerc
- *
这是命令rsync -auzvvrR --no-l --no-H --filter='dir-merge /.rsync-filter' $HOME/.var/app/com.valvesoftware.Steam/data/Steam Music/ --dry-run > $HOME/Documents/rsync_results/steam.txt
和我的 Steam 目录中的命令(我尝试将过滤器文件放在不同的目录中,但无济于事):
+ /userdata
+ /userdata/***
+ /home/[REDACTED]/.var/app/com.valvesoftware.Steam/steamapps/common
+ /home/[REDACTED]/.var/app/com.valvesoftware.Steam/steamapps/common/***
正如您所看到的,我尝试过完整路径和相对路径,但这没有什么区别。
这是以下的输出tree
:
/home/[REDACTED]/.var/app/com.valvesoftware.Steam
├── cache -> .cache
├── config -> .config
├── data -> .local/share
├── Music
└── Pictures
如何.rsync-filter
在我的主目录中创建一个文件并rsync
仅同步我在该文件中指定的文件和文件夹?另外,是否可以包含要排除的文件和/或文件夹名称字符串?
编辑:弗雷迪评论中提到的建议有效。但我想排除其中一个子目录中的某些文件夹。
这是过滤器:
# rsync -auvzR --no-l --no-H --filter='dir-merge .rsync-filter' /home/[REDACTED]/.var/app/com.valvesoftware.Steam/data/Steam --dry-run
+ /steamapps
+ /steamapps/common/***
+ /userdata
+ /userdata/***
### These dirs do not get excluded
- /steamapps/common/Proton - Experimental
- /steamapps/common/Proton EasyAntiCheat Runtime
- /steamapps/common/Steam.dll # file
- /steamapps/common/Steam Controller Configs
- /steamapps/common/SteamLinuxRuntime_soldier
- /steamapps/common/Steamworks Shared
###
- *