複数のSFTPサーバーに接続し、いくつかのファイルをダウンロードし、最後にダウンロードしたファイルをSFTPサーバーの別のフォルダーに移動するRubyで書かれたバックグラウンドタスクがあります。
問題は、rename
1つのサーバーでのみコマンドが失敗することです。
この質問で興味深い点はubuntuのsftpライブラリまたはRubyの対話型コンソールを使用してサーバーに接続し、バックグラウンドジョブで使用するのと同じコードを実行しても失敗しません。したがって、権限の問題ではありません。
2番目の方法:
次の回避策で実装を更新しましたが、これがうまくいくremove
と思います。
def move(from_path, to_path)
sftp.rename(from_path, to_path) do |response|
sftp.remove(from_path) unless response.ok?
end
end
上記のコードはファイルの約75%を削除して処理します。
ここで何が間違っているのかというアイデアはありますか?
ここで使用されるライブラリは次のとおりです。 https://github.com/net-ssh/net-sftp https://github.com/resque/resque