홈 디렉터리를 외부 드라이브에 미러링하려고 할 때 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/