ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。
LinuxやUnix系OSサーバ間でよく使うコマンド『rsync』。
1カ月以内に中身を作成、または変更したファイルのみを転送しようとしたら、以外と手間がかかりました。
同じ悩みを抱える方々、参考までにご一読ください。
ローカルPCにリモートサーバ上の1ヵ月以内のログをSSHでダウンロードしたい!
リモートサーバ(OSはlinux) ⇒ ローカルPC
まず、『rsync』でファイル転送だけを実施するなら、こんなコマンドですよね~。
1 |
$ rsync -av -e ssh アカウント名@リモートサーバのIPアドレス:/remote_path/src/ /local_path/dst/ |
では、1カ月以内のログを転送するとなると、どうすればいいのでしょう。
そこで「find」コマンドと「files-from」オプションを追加します。
1 |
$ rsync -av -e ssh --files-from=<(ssh アカウント名@リモートサーバのIPアドレス “find /remote_path/src/ -mtime -32 -type f -exec ls $(basename {}) \;”) アカウント名@リモートサーバのIPアドレス:/ /local_path/dst/ |
上記コマンドを「–dry-run」オプション付で実行すると・・・・
1 2 3 |
remote_path/src/log_file1 remote_path/src/log_file2 remote_path/src/log_file3 |
転送するログとしては問題ないものの、前についているパスが気になりますね。
例えば、以下のような場合。
”リモートサーバAの/remote_path/src/以下のツリー構造だけ、ローカルPCの/local_path/dst/以下に転送したい。”
このケースだと、上記rsyncコマンドでこんな結果になります。
■希望している形
1 2 3 |
/local_path/dst/dir1/log_file /local_path/dst/dir2/log_file /local_path/dst/dir3/log_file |
■コマンド結果
1 2 3 |
/local_path/dst/remote_path/src/dir1/log_file /local_path/dst/remote_path/src/dir2/log_file /local_path/dst/remote_path/src/dir3/log_file |
このギャップを埋めるには、以下のコマンドが使えます。