![rsync를 사용하여 시스템 데이터를 백업하면 "해당 파일이 없습니다"라는 메시지가 나타납니다.](https://linux55.com/image/204698/rsync%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%8B%9C%EC%8A%A4%ED%85%9C%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%EB%B0%B1%EC%97%85%ED%95%98%EB%A9%B4%20%22%ED%95%B4%EB%8B%B9%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4%22%EB%9D%BC%EB%8A%94%20%EB%A9%94%EC%8B%9C%EC%A7%80%EA%B0%80%20%EB%82%98%ED%83%80%EB%82%A9%EB%8B%88%EB%8B%A4..png)
다음 스크립트를 사용하여 전체 시스템 디렉터리를 백업하려고 합니다.
#!/bin/bash
cd /
BACKUP_LOCATION=/media/data/backup/system-backup/
echo Backing up system data to $BACKUP_LOCATION, excluding home directories
sudo rsync -aAXv --exclude={"/home/*", "/swap.img", "/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / $BACKUP_LOCATION
이 프로그램을 실행할 때 다음 오류가 발생합니다.
sending incremental file list
rsync: [sender] link_stat "/swap.img," failed: No such file or directory (2)
rsync: [sender] change_dir "/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*," failed: No such file or directory (2)
내가 이해한 바로는 제외 경로는 소스 디렉토리(/)에 상대적입니다. 따라서 예를 들어 /home/*은 실제 파일 시스템에서 /home/*로 해석되어야 합니다. 내가 여기서 뭘 잘못하고 있는지 말해 줄 수 있는 사람이 있나요?
답변1
명령을 실행할 때
sudo rsync -aAXv --exclude={"/home/*", "/swap.img", "/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / $BACKUP_LOCATION
중괄호 확장을 지원하는 쉘은 올바른 형식의 중괄호 표현식이 포함된 단어에 대해서만 지원합니다. 예를 들어 다음을 실행하여 명령이 어떻게 해석되는지 테스트할 수 있습니다.
bash -xc 'rsync -aAXvn --exclude={"/home", "/swap.img", "/dev"} / /media/data/backup/system-backup/' 2>&1 | grep ^\+
밝혀지다
+ rsync -aAXvn '--exclude={/home,' /swap.img, '/dev}' / /media/data/backup/system-backup/
즉, 쉘은 단어 분할을 --exclude={"/home", "/swap.img", "/dev"}
세 개의 인수 --exclude={/home,
(닫는 중괄호가 없기 때문에 올바른 형식의 중괄호 표현식이 아님), /swap.img,
(쉼표 포함) 및 로 분리합니다 /dev}
.
명령으로 변경된 경우
bash -xc 'rsync -aAXvn --exclude={"/home","/swap.img","/dev"} / /media/data/backup/system-backup/' 2>&1 | grep ^\+
실행 후에는 세 개의 개별 인수로 올바른 중괄호 확장이 표시됩니다 --exclude
.
+ rsync -aAXvn --exclude=/home --exclude=/swap.img --exclude=/dev / /media/data/backup/system-backup/