내 홈 디렉터리를 ext4에서 btrfs로 'rsync --archive --update'로 백업한 후 rsync는 다음과 같은 오류를 보고합니다.
rsync: readdir("/mnt/backup/home/me/.mozilla/firefox/qbdcaxwe.default/sessions/????????? ??????"): Not a directory (20)
rsync: rename "/mnt/backup/home/me/.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN" ->
+"home/me/.mutt/cache/bodies/imaps:[email protected]/INBOX/3-13228": Not a directory (20)
'rm'을 사용하여 이러한 항목을 삭제하려고 하면 이 항목이 디렉터리라는 오류 메시지가 나타납니다. 그러나 'rm -d'는 "제거할 수 없습니다...: 해당 파일이나 디렉터리가 없습니다."라는 메시지와 함께 실패합니다. 'btrfs check' 및 'btrfs scrap'에서는 파일 시스템 오류를 발견하지 못했습니다.
다음은 'file', 'rm' 및 'rmdir' 명령의 출력입니다.
$ file /.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN
/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN: SMTP mail, Non-ISO extended-ASCII text, with very long lines
$ rm /.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN
rm: remove regular file ‘/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN’? y
rm: cannot remove ‘/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN’: Not a directory
$ rmdir /.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN
rmdir: failed to remove ‘/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN’: Not a directory
그러한 파일 시스템 항목을 어떻게 제거할 수 있습니까?
답변1
사용자의 homedir 백업은 앱이 실행 중인 동안 사용자가 실행하는 경우 문제가 발생할 수 있습니다. 앱이 파일을 열어두거나 파일 및 디렉터리를 추가/제거하고 백업 프로세스를 방해할 수 있기 때문입니다.
(가능한 경우) 훨씬 더 나은 방법은 사용자가 로그아웃한 동안 루트로 백업을 생성하는 것입니다.
또는 백업을 수행하는 동안 실행 중인 앱 수를 최소화해 보십시오(GUI를 종료하고 명령줄 터미널에서 rsync cmd 실행).
마지막으로 일부 앱은 파일/디렉터리 이름에 특수 문자를 사용하여 다양한 유틸리티를 혼동시킬 수 있습니다. 이를 위해서는 발생을 추적하고(출력을 파일로 리디렉션하는 것이 가장 좋음) 대체 솔루션(문자 이스케이프,탭필요에 따라 파일/디렉터리 이름 또는 기타 복사 유틸리티를 자동 완성하는 키입니다.
답변2
btrfs를 사용하는 경우 해당 기능을 활용해 보는 것은 어떨까요?
스냅샷을 찍으세요:
sudo btrfs sub snap /home/me /home/me/.$(date +%Y-%m-%d_%H%M%S)_snapshot
라이브 데이터가 아닌 이전 백업을 스냅샷으로 재동기화합니다.
rsync --archive --update /mnt/backup/home/me/ /home/me/$(sudo btrfs subvolume list -c /home/me|tail -n1|awk '{print $NF}')/
(저는 주로 rsync -mauvPAX from/ to/ #을 사용하지만 그 모든 것이 필요하지 않을 수도 있습니다.)
이제 btrfs가 있으므로 라이브 데이터 대신 스냅샷을 백업할 수 있으며 이는 이 문제를 피하는 데 도움이 됩니다.