포인트 파일을 백업하는 가장 좋은 방법을 찾으려고 노력 중이고, 이를 위한 방법을 고안했습니다. 나는 git과 rsync를 사용하여 모든 도트 파일을 백업합니다. rsync 스크립트는 이제 다음과 같습니다:
rsync -avhP $HOME/.??* --exclude-from=$HOME/.dotBackup/exclusions.list $HOME/.dotBackup
그러나 나는 이것이 최선의 접근 방식이 아니라고 생각합니다. exclude-from
나는 arg를 사용하여 파일을 제외하고 싶지 않으며, 다른 방법으로 백업하려는 특정 디렉터리 및 파일 목록을 갖고 싶습니다. 여기서 상황이 약간 모호해집니다. 예를 들어 ~
디렉터리가 ~
다음과 같은 일부 파일을 백업하고 싶을 수 있습니다 .
~
|- Downloads (do not back up)
|- .bashrc (back up)
|- .config
|- nvim (back up including subdirectories)
|- code
|- extensions (do not back up)
|- preferences.json (back up)
rsync를 사용하여 이와 같은 작업을 수행하려면 어떻게 해야 합니까?
답변1
다음은 rsync 필터 파일을 사용하는 예입니다. --filter='dir-merge /.rsync-filter'
옵션과 함께 사용하거나 간단히 -F
.
다음 내용을 포함하여 파일을 .rsync-filter
rsync 소스 디렉터리(yours )에 배치합니다.$HOME
# include .bashrc
+ /.bashrc
# include .config dir (parent of nvim and code)
+ /.config/
# exclude (overrides nvim include below)
- /.config/nvim/but_not_this_dir/
# include nvim dir and everything in this directory
+ /.config/nvim/***
# include code dir and preferences.json
+ /.config/code/
+ /.config/code/preferences.json
# exclude everything in the source dir
- *
우리는 소스 디렉토리의 모든 항목 제외를 사용하고 있으므로 - *
상위 디렉토리를 포함하여 포함하려는 모든 디렉토리를 소스 디렉토리에 수동으로 추가해야 합니다. 을 포함 foo/bar/
하지만 포함하지 않으 려면 및 재정의를 foo/abc/
추가해야 합니다 . 이러한 포함에 대한 재정의는 이러한 포함 전에 추가되어야 합니다.+ /foo/
- *
+ /foo/bar/
테스트 실행 옵션으로 명령을 테스트 -n
하여 출력을 확인하고 추가 -vv
하여 필터가 표시하거나 숨기는 파일/디렉터리를 확인하세요.
수정된 명령은 다음과 같습니다:
rsync -avFhp ~/ ~/.dotBackup
많은 적용 범위가 필요한 경우(이 디렉터리와 해당 디렉터리를 동기화하지만 이 /foo 및 해당 /bar/baz는 제외) 이와 같은 필터를 사용하는 것이 합리적입니다. 사용 --files-from
중인 옵션엠마 루오의 답변더 간단한 사용 사례의 경우.
답변2
다음을
~/.config/ABC/
제외하고 내 파일을 백업하고 싶을 수도 있습니다 .~/.config/ABC/ex
rsync
- 원하는 파일과 디렉터리가 포함되어 있습니다.
- 필요하지 않은 파일 및 디렉터리 제외
따라서 명령이 에서 실행된다고 가정하면 $HOME
다음과 같습니다.
rsync --dry-run -avP --exclude '/ex' .config/ABC/ ABCBackup
또는 아래의 모든 도트 파일과 디렉터리를 복사하도록 기존 명령을 수정하는 것에 대해 이야기하는 경우 $HOME
:
rsync --dry-run -avP --exclude '.config/ABC/ex/' --exclude '.dotbackup/' .??* .dotBackup
발언으로 판단하면 "[...] 백업하려는 특정 디렉터리 및 파일 목록을 갖고 싶습니다."훨씬 쉬워요.
파일 목록을 파일에 넣습니다(예 $HOME/.to_backup
: 포함할 전체 디렉터리가 있는 경우 해당 디렉터리도 뒤에 슬래시를 추가). 모든 경로는 에 상대적일 수 있습니다 $HOME
. 예제 트리를 사용하면 파일에 다음 항목이 포함됩니다.
.bashrc
.config/nvim/
.config/code/preferences.json
그런 다음 다음 명령을 사용하십시오( --dry-run
예상대로 작동하면 제거하십시오).
cd # Start from $HOME so relative paths in the source file work correctly
rsync --dry-run --files-from .to_backup -arvP . .dotBackup/