![sftp put - rsync と同等](https://rvso.com/image/164741/sftp%20put%20-%20rsync%20%E3%81%A8%E5%90%8C%E7%AD%89.png)
パイプが壊れた後にput
進行中のファイル転送を回復するためにコマンドを使用したいと思います。sftp
ファイルのアップロードは、送信先のサイズが送信元ファイルのサイズより小さい場合にのみ行ってください。
アクセス権がないssh
ので、rsync
選択肢にありません。
からsftp マニュアル、フラグを指定してみましたput -a -r source_dir/
。しかし、転送中にエラーメッセージが表示されました。
- エラー:
Couldn't stat remote file: No such file or directory
サーバー上にないファイル - エラー:
Destination file bigger or same size as source file
ファイルが既にサーバー上にあり、正しく転送されるべきではない場合
最初のエラーの実際の例:
Uploading of file /Volumes/Seagate/amphioxus/raw_h5/9N0Bp0b0_m150427_041848_42182_c100810932550000001823181110291543_s1_p0.2.bax.h5.gz to /deposits/Pacbio_amphioxus/raw_h5/9N0Bp0b0_m150427_041848_42182_c100810932550000001823181110291543_s1_p0.2.bax.h5.gz failed!
Couldn't stat remote file: No such file or directory
もちろん、ファイルはソースディレクトリに存在します。
これに対する解決策はありますか?
答え1
これは解決策ではありませんが、回避策としては、サーバーをローカルにマウントして、データをコピーするだけです。
sshfsリモートディレクトリをマウントするために使用できます:
sudo sshfs -o allow_other,default_permissions [email protected]:/ /mnt/local_directory
次に
cp -ru
ここで、u はマウントされたリモート ディレクトリ内のファイルを不足しているファイルで更新します。
答え2
最善の解決策は、リモート システムの管理者にssh
アクセス権と使用権限を付与してもらうrsync
か、可能であればrsync
アクセス権のみ付与してもらうことです。
sftp
ファイルは配置 (および取得) できますが、ディレクトリ (およびそのコンテンツを含むディレクトリ ツリー) は配置 (および取得) できません。
回避策としては、tarball [圧縮] tarfileを作成し、それをsftp
。
tar -cvzf filename.tar.gz source_dir/
sftp
復元する必要がある場合は、内容を確認してから復元してください
tar -tvf filename.tar.gz
正しいディレクトリにいることを確認し、tarballから抽出してください。
tar -xvf filename.tar.gz
答え3
-a
sftp のオプションを使用します。man sftp
これは、sftp に「既存のファイルの部分的または完全なコピーを上書きするのではなく、中断された転送を続行するように指示します。部分的な内容が転送中のものと異なる場合、結果のファイルは破損している可能性があります。」と指示します。