Linux
用 sftp 上傳目錄?
我在通過 sftp 上傳目錄(包含其他幾級深的目錄)時遇到了一些問題。我意識到我可以通過 gzipping 解決這個問題,但我不明白為什麼這是必要的。
反正我試試
sftp> put bin/ Uploading bin/ to /home/earlz/blah/bin bin/ is not a regular file sftp> put -r bin/ Uploading bin/ to /home/earlz/blah/bin Couldn't canonicalise: No such file or directory Unable to canonicalise path "/home/earlz/blah/bin"
我認為最後一條錯誤消息是完全愚蠢的。所以目錄不存在?為什麼不創建目錄?
sftp是否有這個問題,或者我應該只使用scp?
更正:我最初錯誤地聲稱 OpenSSH 不支持
put -r
。確實如此,但它以一種非常奇怪的方式進行。似乎期望目標目錄已經存在,與源目錄同名。sftp> put -r source Uploading source/ to /home/myself/source Couldn't canonicalize: No such file or directory etc. sftp> mkdir source sftp> put -r source Uploading source/ to /home/myself/source Entering source/ source/file1 source/file2
特別奇怪的是,即使您為目的地指定不同的名稱,這也適用:
sftp> put -r source dest Uploading source/ to /home/myself/dest Couldn't canonicalize: ... sftp> mkdir dest sftp> put -r source dest Uploading source/ to /home/myself/dest/source Couldn't canonicalize: ... sftp> mkdir dest/source sftp> put -r source dest Uploading source/ to /home/myself/dest/source Entering source/ source/file1 source/file2
為了更好地實現 recursive
put
,您可以改用 PuTTYpsftp
命令行工具。它位於putty-tools
Debian(很可能是 Ubuntu)下的軟體包中。或者,如果你想使用 GUI,Filezilla 會做你想做的事。
我不知道為什麼 sftp 會這樣做,但如果目標目錄已經存在,您只能遞歸複製。所以這樣做…
sftp> mkdir bin sftp> put -r bin