使用 sftp 传输目录?

使用 sftp 传输目录?

当我尝试使用 sftp 传输包含文件的目录时,收到一条错误消息:

skipping non-regular file directory_name

该目录包含几个文件和两个子目录。

我究竟做错了什么?

答案1

sftp与 和 一样cpscp要求当您复制文件夹(显然是其内容)时,您必须明确告诉它您要使用该-r选项递归地传输文件夹。

因此,添加-r到命令中。

答案2

我只能建议,你使用rsync.通过安全连接移动文件时,这在某种程度上是一种行业标准。

rsync -alPvz ./source_dir server.com:destination_dir

这是我多年来一直使用的。

(该-a选项负责目录递归等事情)

答案3

这对我有用:

1)通过连接sftp到远程主机

2) 切换到您要复制的远程目录。 (示例:CD 音乐)

3)更改为您要将内容复制到的本地目录。 (例如:液晶台式机)

4) 发出此命令:get -r *

答案4

如果你的问题实际上是“我如何使用 sftp 传输目录”,那么

 sftp -r user@server

但如果您传输目录,我可能会根据您的需要建议两个更好的选择。 sftp需要在类似 ssh 的命令提示符下登录远程服务器,但如果您想要的只是文件,还有更简单、更快捷的方法。

SCP

对于一次性传输,上传尝试:

 # upload source directory to remote server
 scp -rp source_dir user@server:dest

 #download directory from remote server:
 scp -rp user@server:source_dir dest

 #specifying ssh key:
 scp -rp -i ~/.ssh/key user@server:source_dir dest

 #remote directory has spaces
 scp -rp -i ~/.ssh/key user@server:"source\\ dir" dest

同步

如果您计划定期同步目录,那么使用 rsync 更有意义。它在两个目录之间执行增量操作,从而节省传输时间和网络数据。

rsync -r -a -v -e ssh --delete source_dir user@server:dest

以下是一些最常见的 rsync 选项的列表:(取自这里

  • --delete - 删除发送者(系统)上不存在的文件
  • -v - 详细(-vv 将提供更详细的信息)
  • -e "ssh options" - 指定 ssh 作为远程 shell
  • -a - 存档模式 - 它保留权限(所有者、组)、时间、符号链接和设备
  • -r - 递归到目录
  • -z - 在传输期间压缩文件数据
  • --exclude 'foldername' – 从传输中排除相应的文件夹
  • -P – 显示传输过程中的进度

希望有帮助!

相关内容