LoginSignup
3
4

More than 5 years have passed since last update.

scp のワンライナーを作る練習

Last updated at Posted at 2014-12-10

背景

 アプリケーションの検証のために「データベースサーバから、ダンプファイルを持ってきたい」というのはよくある話だと思います。その時に、毎回 ssh でログインしてファイルの場所を確かめて、scp でコピーする、という手順を踏んでいたんですが、これが結構面倒くさいので、もうちょっと早くしてみようと思いました。

前提

 ホスト名 dbserver のディレクトリ /backup/db_bkup/daily/ にて、毎日データベースをダンプしています。ダンプファイルの名前には、タイムスタンプがついていて database_20141201.dump.gz みたいな形式になっています。直近の一週間、七個のファイルが常に配置されています。

結論

 上の前提のとき、下のコマンドを叩けばホームディレクトリに最新のダンプファイルが取れます。

scp dbserver:`ssh dbserver "ls /backup/db_bkup/daily/database* | tail -n1"` ~/

解説

 最初は下のようなシェルスクリプトを書きました。これを混ぜてみたら上のができました。

# 一番新しいファイルの絶対パスを得るコマンドを作成
# (場合によっては ls のオプションでソートする必要があります)
CMD="ls /backup/db_bkup/daily/kit_database* | tail -n1"

# 上のコマンドを dbserver で実行して、結果を代入
FILE_PATH=`ssh dbserver $CMD`

# scp でファイルを取ってくる
scp dbserver:$FILE_PATH ~/
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4