rsync를 사용하여 디렉터리를 외부 드라이브에 복사할 때 장치에 남은 공간이 없습니다. 오류

rsync를 사용하여 디렉터리를 외부 드라이브에 복사할 때 장치에 남은 공간이 없습니다. 오류

홈 디렉터리를 외부 드라이브에 미러링하려고 할 때 rsync가 실패하는 문제가 있습니다. rsync 호출은 (일반 사용자로서) 다음과 같습니다.

rsync -avz --progress --delete-before /home /mnt/st5/

다음 오류로 인해 이 작업이 실패합니다.

home/matt/vms/windows/10/disk.img
 40,002,387,968  28%   89.32MB/s    0:17:59  rsync: [receiver] write failed on "/mnt/st5/home/matt/vms/windows/10/disk.img": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(378) [receiver=3.2.3]

rsync: [sender] write error: Broken pipe (32)

/home/matt이 오류는 에 사용 가능한 것보다 더 많은 공간이 있음 을 나타내는 것 같습니다 /mnt/st5. 그러나 나는 이것이 사실이라고 믿지 않습니다. 내 홈 디렉터리의 크기는 다음과 같습니다(소스와 대상은 모두 btrfs 파일 시스템입니다).

matt@ryzen3950 ~/s/tools> btrfs fi du -s /home/matt
     Total   Exclusive  Set shared  Filename
 783.83GiB     6.15GiB   760.30GiB  /home/matt

1TB 드라이브를 목표로 함:

matt@ryzen3950 ~/s/tools [11]> lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sde              8:64   0 931.5G  0 disk  
└─sde1           8:65   0 931.5G  0 part  /mnt/st5

이를 바탕으로 약 150GB 정도의 여유 공간을 남겨두고 rsync를 수행할 수 있을 것으로 판단됩니다.

내가 어디서 잘못됐나요? 내 홈 디렉토리가 생각보다 큽니까?

답변1

--inplace에 설명된 대로 사용하세요.이 서버에 잘못된 답변이 있습니다나를 위해 작동합니다. rsync가 실패한 파일 크기 disk.img는 130G였으며 이는 문제에 대한 힌트를 제공한다고 생각합니다. 내가 이해한 바에 따르면 rsync는 대상에 파일 복사본을 만든 다음 복사가 완료된 후 기존 버전을 대체합니다. 즉, 파일의 복사본 두 개가 동시에 대상에 존재할 수 있으며, 이로 인해 대용량 파일을 복사할 때 공간 문제가 발생할 수 있습니다. --inplace복사본이 먼저 생성되지 않도록 동작을 변경합니다.

새로운 완전한 명령은 다음과 같습니다:

rsync -avz --progress --delete-before --inplace /home /mnt/st5/

관련 정보