Ubuntu
sshfs 上的 Rsync 跳過以下劃線開頭的文件名
我正在嘗試將目錄樹從 OS X (10.11) 同步到 Ubuntu 14.04。雖然大多數文件都可以正常傳輸,但名稱以
_
(下劃線)開頭的文件卻不能。這是我使用的命令:
rsync -rtvh --progress ~/Pictures/processed/ ~/mnt/processed/
以及輸出範例:
sending incremental file list _MG_7425.jpg 4.66M 100% 169.79MB/s 0:00:00 (xfr#1, to-chk=58/60) _MG_7427.jpg 6.59M 100% 103.07MB/s 0:00:00 (xfr#2, to-chk=57/60) ... rsync: mkstemp "/Users/user/mnt/processed/._MG_7425.jpg.0cAYb3" failed: No such file or directory (2) rsync: mkstemp "/Users/user/mnt/processed/._MG_7427.jpg.5Gw1vD" failed: No such file or directory (2) sent 306.24M bytes received 9.46K bytes 122.50M bytes/sec total size is 306.17M speedup is 1.00 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1249) [sender=3.1.2]
我的 rsync 是從自製軟體安裝的,版本資訊:
rsync version 3.1.2 protocol version 31 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. Web site: http://rsync.samba.org/ Capabilities: 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, append, ACLs, xattrs, iconv, symtimes, no prealloc, file-flags
使用以下方式安裝遠端位置
sshfs
:sshfs -o idmap=user username@hostname:/some/path ~/mnt -o auto_cache,reconnect,defer_permissions,noappledouble
使用命令複製跳過的文件之一
cp
成功。我嘗試添加沒有效果的選項--iconv=utf-8-mac,utf-8
。--include '_*'
我究竟做錯了什麼?
事實證明,罪魁禍首是在
sshfs
旗幟中。noappledouble
我用來刪除文件的標誌.DS_Store
實際上乾擾了rsync
的工作。noappledouble
此選項使 osxfuse 拒絕對 Apple Double (
._
) 文件和.DS_Store
文件的所有類型的訪問。任何現有文件都將變得明顯不存在。將不允許創建符合條件的新文件。正如它所指出的,該選項還與
._
名稱前綴有關,這正是rsync
其臨時文件所使用的:rsync: mkstemp "/Users/user/mnt/processed/._MG_7425.jpg.0cAYb3" failed: No such file or directory (2)
因此,在
mkstemp
創建臨時文件時,sshfs
會干擾並阻止它的創建。
noappledouble
從安裝命令中刪除選項sshfs
修復了問題並且_*
文件已正常傳輸。感謝@Halfgaar 為我指明了正確的方向。