![如何快速找到 Linux 上兩個應該相同的目錄之間最大的不同檔案/目錄?](https://rvso.com/image/231064/%E5%A6%82%E4%BD%95%E5%BF%AB%E9%80%9F%E6%89%BE%E5%88%B0%20Linux%20%E4%B8%8A%E5%85%A9%E5%80%8B%E6%87%89%E8%A9%B2%E7%9B%B8%E5%90%8C%E7%9A%84%E7%9B%AE%E9%8C%84%E4%B9%8B%E9%96%93%E6%9C%80%E5%A4%A7%E7%9A%84%E4%B8%8D%E5%90%8C%E6%AA%94%E6%A1%88%2F%E7%9B%AE%E9%8C%84%EF%BC%9F.png)
我是嘗試同步兩個硬碟。我認為大多數不想丟失任何資料並且不使用 RAID 的人都會使用這種方法,這樣就會有一個運作良好的 GUI。情況似乎並非如此,在 Linux 上我只找到了 Grsync GUI 可以做到這一點,但由於它無法複製 root 擁有的文件,我仍然必須在控制台中運行此 rsync 命令:
sudo rsync -r -t -p -o -g --delete -l -s /media/veracrypt1 /media/veracrypt2
這基本上意味著複製原始磁碟機上的所有內容,並刪除目標磁碟機上已在來源磁碟機上刪除的文件。我打算克隆驅動器,使其內容 100% 完全相同,並且命令中可能仍然缺少一些參數。兩個 ext4 磁碟機均使用 VeraCrypt 完全加密,且型號完全相同(儲存大小也相同)。我使用的是 Debian12/KDE。
我的問題是由於目標磁碟機已滿,它總是在完成複製之前中止,rsync 顯示此錯誤:
rsync: [receiver] write failed on "/media/veracrypt2/file": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(380) [receiver=3.2.7]
rsync: [sender] write error: Broken pipe (32)
但它不應該已滿,因為lsblk -f
顯示來源磁碟機的 FSUSE% 低於 95%,並且有大量可用 GB。
我已經嘗試刪除目標磁碟上的大文件並重新運行它,--exclude-from='./exclude-file.txt' --delete-excluded
添加以排除一些大文件,var/spool/
並且var/cache/
這些文件位於使用 BackInTime 製作的系統分區備份的目錄中的某個位置。我還將根保留磁碟空間從 5% 更改為 1%,sudo tune2fs -m 1 /dev/mapper/veracrypt2
之前導致它顯示刪除大檔案後0B仍然可用。還是沒有跑通。
如何快速找出哪些目錄大小不同這樣我就可以嘗試找出這個問題的原因?
在磁碟空間未釋放問題上,使用者建議執行命令,例如sudo du -sk /media/veracrypt2/*/* > ./before_deleting_files.txt
比較磁碟空間,但它只顯示4
某些檔案和目錄,並且每個命令需要很長時間加載。
我正在尋找一種不需要很長時間掃描的方法,沒有必須首先解決的其他問題,理想情況下是 1)像圖形磁碟映射(gdmap)這樣的動態圖形,人們可以在其中看到(在這種情況也比較)視覺上的大小和動態導航或2)創建一個簡單列出哪些目錄不同的報告的東西。
答案1
tree -d --du disk1
您可以將和的輸出tree -d --du disk2
分別重定向到一個文件,然後比較它們...
為了避免 rsync 的差異:
在我上面的評論中,我完全沉迷於您所描述的系統的整體複雜性,以至於我什至沒有仔細查看您的rsync
調用。
那需要是
sudo rsync -r -t -p -o -g --delete -l -s /media/veracrypt1/ /media/veracrypt2
不是
sudo rsync -r -t -p -o -g --delete -l -s /media/veracrypt1 /media/veracrypt2
請注意 上的尾部斜線/media/veracrypt1/
。