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

您用丢失的文件更新已安装的远程目录中的文件。

答案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“尝试继续中断的传输,而不是覆盖现有的部分或完整文件副本。如果部分内容与正在传输的内容不同,则生成的文件可能已损坏。

相关内容