sftp put - rsync と同等

sftp put - rsync と同等

パイプが壊れた後に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

-asftp のオプションを使用します。man sftpこれは、sftp に「既存のファイルの部分的または完全なコピーを上書きするのではなく、中断された転送を続行するように指示します。部分的な内容が転送中のものと異なる場合、結果のファイルは破損している可能性があります。」と指示します。

関連情報