Cp

如何使用文件的 inode 號複製文件?

  • January 25, 2022

此問題與 Samba 有關,不需要 inode。


我在處理某個包含一些特殊字元的文件時遇到問題。如果我按它搜尋它,inode它將列出該文件:

$ find . -inum 90505400 -exec ls {} \;
./12 String Quartet No. 16 in F Major Op. 135: Der schwer gefa?te Entschlu?: Grave, ma non troppo tratto (Mu? es sein ?) - Allegro (Es mu? sein !).flac

但是,如果我繼續使用cprm在文件上,它會拋出一個file not found錯誤(在德語’Datei oder Verzeichnis nicht gefunden’):

$ find . -inum 90505400 -exec cp {} ne.flac \;
cp: './12 String Quartet No. 16 in F Major Op. 135: Der schwer gefa?te Entschlu?: Grave, ma non troppo tratto (Mu? es sein ?) - Allegro (Es mu? sein !).flac' kann nicht zum Lesen geöffnet werden: Datei oder Verzeichnis nicht gefunden

我想知道,我是否可以使用另一個直接使用 inode 的命令來複製文件。我也有這個問題一段時間了。我可以使用 刪除所有文件rm *,但我想修復損壞的文件名。


這是一個ext4文件系統,我使用此行從外部 USB 硬碟安裝在 Raspi 上(更改了混淆路徑和 IP):

UUID=e3f9d42a-9703-4e47-9185-33be24b81c46   /mnt/test   ext4    rw,auto,defaults,nofail,x-systemd.device-timeout=15 0 2

然後我與 samba 分享它:

[mybook]
path=/mnt/test
public = yes
browseable = yes
writeable = yes
comment = test
printable = no
guest ok = no

我將它安裝在 Lubuntu 16 上:

//192.168.1.190/test         /home/ben/test               cifs auto,nofail,username=XXX,password=XXX,uid=1000,gid=1000

VNC我通過Macbook連接到 Lubuntu 16 。或者我SSH直接進去。我只是告訴這個以獲得完整的資訊。

我還將共享安裝在 Finder 中的那台 Macbook(和其他)上。Finder 無法正確顯示文件名。

在此處輸入圖像描述


在使用者發表有用的評論後,我意識到我應該嘗試使用原始文件系統操作主機上的文件,而不是嘗試通過 samba 進行操作。

SSH進入主機會顯示此文件名(查看0xF022“135”之後的符號):

'12 String Quartet No. 16 in F Major Op. 135 Der schwer gefa?te Entschlu? Grave, ma non troppo tratto (Mu? es sein ) - Allegro (Es mu? sein !).flac'

然後,我能夠cp在主機本身上複製文件。

flac(如果有人想知道我是如何得到文件名的:我將一個帶有表格的匯總文件拆分cue為單獨的文件,它們會自動命名。)

所有open()(用於複製)rename()unlink()(刪除)文件名工作。除了像debugfs.

如果您可以使用 刪除文件rm *,您應該可以使用 重命名它mv ./12* someothername.flac,或者使用複制它cp ./12* newfile.flac(假設./12*僅匹配該文件)。find本身不應該那麼不同。

但是你提到了 Mac,我認為 Mac 要求文件名是有效的 UTF-8,如果文件名被破壞,這可能會導致問題。Linux 不會命名無效的 UTF-8,但當然也有一些工具可能會做出奇怪的反應。(我還沒有測試過。)在那里安裝 Samba 可能也無濟於事。

假設這與問題有關,您可以嘗試使用文件系統通過 SSH 連接到主機,跳過中間部分,然後重命名那裡的文件。

引用自:https://unix.stackexchange.com/questions/687592