使用 NET::SCP gem in Ruby 将文件上传到服务器并删除原始文件

Upload file to server and delete original using NET::SCP gem in Ruby

我正在使用 net/scp gem 将文件从我的机器上传到远程 Linux 服务器。

require 'net/ssh'
require 'net/scp'

Net::SCP.upload!(10.125.0.0,
                user,
                local_path,
                remote_dir,
                :ssh => { :password => psw,
                          :key_data => keys})

这非常有效,但是我希望能够 'move' 文件而不是有效地复制文件。

是否有一些scp参数会删除原始文件?

Net::SCP 没有任何这样的参数:

https://github.com/net-ssh/net-scp/blob/master/lib/net/scp.rb#L259-L267

由于复制和移动之间的唯一区别只是源的最终删除,因此您应该在 upload! 之后手动执行此操作。

File.delete(local_path)

您很可能希望确保 Net::SCP 已经完成,然后再这样做:

require 'net/ssh'
require 'net/scp'

channel = Net::SCP.upload!(10.125.0.0,
                user,
                local_path,
                remote_dir,
                :ssh => { :password => psw,
                          :key_data => keys})
channel.wait
File.delete(local_path)