Ubuntu

sshfs 上的 Rsync 跳過以下劃線開頭的文件名

  • January 12, 2017

我正在嘗試將目錄樹從 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的工作。

sshfs 掛載選項文件:

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 為我指明了正確的方向。

引用自:https://serverfault.com/questions/824167