screenを使ってファイルを転送する。こせきの技術日記スマートフォン用の表示で見るこせきの技術日記この広告は、90日以上更新していないブログに表示しています。2010-10-09screenを使ってファイルを転送する。「いま、sshで見えてるこのファイルが手元にほしい」という時に、scpは手間がかかりすぎる。いまlsで見えてるこのファイルなのに、なぜscpにコマンドラインオプションを渡さなければならないのか。そもそも踏み台サーバを経由している場合など、単純にscpできないこともある。目の前のssh接続を利用して、ファイルを手軽に転送したい。file.tar.gzとしたい。実現する方法が思いつかないので、screenを使う方法を考えた。以下、Ctrl-Aはscreenの設定にあわせて読みかえてください。uuencodeされたファイルをログに書く。みたいなログファイルができる。screenlog.1でデコードする。ログの前後に不要な行が含まれていても問題ない。uuencodeで指定した二番目のファイル名で保存される。uuencodeがサーバに無い場合。使えない時は、base64でエンコードする。この場合、前後にゴミの行が入ってはいけないので、最初と最後にsleepするとよい。(出力が終わったらログ停止)sleepしている隙にログ開始・終了すると、base64エンコードされたファイルだけがログに書き込まれる。エンコード完了時のsleepは油断していると終わってしまうので長めにとってある。冒頭にも末尾にもゴミの行がついていると、tailとheadを組み合わせなければならず面倒なので、sleepがオススメ。末尾だけなら手元でheadで削ってもよい。uuencodeのbase64オプションを利用する。手動でヘッダとフッタを出力すればよい。(ログ終了)filename.outはデコード時の出力ファイル名。644はデコード時のパーミッション。