디스크에 손상된 파일이 많은 홈 디렉터리가 있습니다. 최대한 많은 파일을 저장하려고 노력 중입니다. 다음 명령을 사용하여 외부 드라이브에 홈 디렉터리의 백업을 만들려고 합니다.
tar -cvf backup /home/myHome
그리고 또한 시도했다
rsync -vfh /home/myHome /media/backup
손상된 파일이 발견되면 두 방법 모두 중지됩니다. 복사를 계속하고 잘못된 파일을 무시하고 가능한 모든 것을 복사하고 복사되지 않은 파일 끝에 로그를 표시하도록 강제하는 방법이 있습니까?
감사해요.
답변1
외장 드라이브에 충분한 공간이 있는 경우 복구할 수 없는 섹터를 건너뛰고 파티션 전체 복사를 수행합니다. 그럼 복사해서 전화 fsck
해보세요.
실패한 드라이브에서 파티션을 복사하려면 다음을 사용하세요.myrescue
또는 이것이 충분히 유연하지 않은 경우ddrescue
또는dd_rescue
. 이러한 도구는 모두 읽을 수 없는 영역을 건너뛰거나 반복 읽기가 작동할 가능성이 있는지(예: 광학 미디어 또는 플로피 디스크)에 따라 조정하거나 반대로 실패한 드라이브를 더 빨리 마모시킵니다(예: 대부분의 하드 드라이브). 드라이브 오류) ). 당신은 또한 볼 수 있습니다실패한 드라이브의 데이터 저장,손상된 SD 카드에서 데이터를 복구하는 방법은 무엇입니까?
sudo myrescue /dev/sda42 >/media/backup/home.raw
cp /media/backup/home.raw /media/backup/home.recovering
/sbin/fsck -f /media/backup/home.recovering
sudo mount -o loop /media/backup/home.recovering /mnt
cp -a /mnt /media/backup/home.saved
답변2
나는 이것을 위해 작은 스크립트를 썼다
#!/bin/bash
echo "copying from $1"
find $1 -type f -print0 | while read -d $'\0' -r file ; do
echo Processing "$file"
target="$2""$file"
if (test -f "$target") then
echo File Exists: "$target"
else
echo copying to "$target"
targetDir=`dirname "$target"`
if (! [ -d "$targetDir" ]) then
mkdir "$targetDir"
fi
ddrescue -e0 -r0 -v -n "$file" "$target"
if ([ $? -ne 0 ]) then
echo Copy failed, deleting "$target"
rm -f "$target"
fi
fi
done
답변3
우선, rsync -aHv
---를 사용하는 것은 rsync -vfh
원하는 작업에 적합하지 않습니다.
rsync에는 사용할 수 있는 --ignoring-existing 플래그가 있습니다. rsync -aHv --ignore-existing
I/O 오류로 종료될 때까지 실행합니다 . 실패한 파일의 이름을 기록하고 rsync가 작동하면 복사될 외부 드라이브에 빈 버전의 파일을 만듭니다. --ignore-existing을 사용하여 rsync 명령을 다시 실행하면 실패한 파일 복사를 시도하지 않게 됩니다. rsync가 다른 모든 것을 복사하기를 바라지만, 다시 중지되면 프로세스를 반복하십시오. rsync가 완료될 때까지 반복합니다.