從 ext4 複製到 NTFS-3G 時,rsync 將大小翻倍
我想使用 . 將我的
home
目錄備份到外部 SSD 驅動器rsync
。我在 Arch Linux 上。我家是
ext4
(251G),SSDNTFS-3G
掛載為fuseblk
(512G)。確切的
rsync
呼叫是:rsync -aSh --info=progress2 --delete --exclude=/me/.cache /home/me /run/media/me/Samsung_T5/
最終,它失敗了,這是它的遺言:
218.76G 99% 25.08MB/s 2:18:36 (xfr#2093188, ir-chk=1368/2286507) rsync: write failed on "/run/media/me/Samsung_T5/me/a_file": No space left on device (28)
因此,
rsync
據稱複製了大約 218G 的數據,並且由於我的 SSD 已滿而無法繼續。當我詢問
du
我的 SSD 目標上有多少數據時rsync
,它說 466G。$ du -hs /run/media/me/Samsung_T5/me 466G /run/media/me/Samsung_T5/me
這很奇怪。
rsync
試圖複製281G,但是複制218G失敗了,因為它實際上複製了466G。我在這裡做錯了什麼?
我確實知道這一點
NTFS
並且ext4
與眾不同。但是它們是否足以使我的文件大 2 倍以上?我複制的是否比我實際擁有的多home
?將
rsync
我的 ~280G 備份home
到我的 SSD 的正確程序是什麼home
?更新
$$ Thanks to the comments below $$: 我的源目錄中有大量小文件和一定數量的稀疏文件。例如,源中有一個 4K 大的文件,目標中有一個 128K 大的文件。還有一個稀疏文件,源中為 12K,目標中為 128K。
此外,我確實有 244 個指向不同執行檔(例如,共享庫)的硬連結。其中一些硬連結指向一些相對較大的文件。例如,一個版本的
binutils
連結器 (ld
) 大約 7M,我有 4 個硬連結。
您可能會查看duplicity及其 gui deja-dup。它使用 tar 文件進行增量備份,可選擇加密,可選擇遠端伺服器。
它使用 librsync 及其滾動校驗和算法,以便每個增量存檔僅保存文件的更改部分。
首頁說它處理 Unix 權限、符號連結、fifos 和設備文件,但不保留硬連結。如果您有許多大的硬連結文件,它在存檔中可能不是最佳的,但更重要的是,您可能還需要單獨注意哪些文件是相互連結的,以便如果您需要恢復它們,您可以放回連結。如果可能,轉換為符號連結將解決此問題。
您可以使用類似的東西尋找硬連結
find /home/me -links +1 -type f -printf '%n %i %D %p\n' | sort -n
其中格式字元串顯示
%n
連結%i
數、inode 編號、文件所在%D
的設備和%p
路徑名。具有相同 inode 編號和設備的行是硬連結。該設備僅在目錄樹中有掛載點時才有用(因為不同設備上的同一個 inode 不是同一個文件)。當然,即使是 rsync,也無法處理指向樹外文件的硬連結。