tarの基本とsshでの転送
tarの基本復習と、sshでの転送についてメモ。
基本操作から。すぐ忘れてしまうので、、、
tarを操作する際のファイルやディレクトリは、絶対パスではなく相対パスで指定する。
dataディレクトリ以下をbackup.tar.gzファイルに圧縮格納。
$ tar czvf backup.tar.gz data
カレントディレクトリ以下のファイルを、backup.tar.gzファイルに、old.logファイルを除いて圧縮格納
$ tar czvf backup.tar.gz . – -exclude old.log
このオプションは注意が必要のようだ。ファイルとディレクトリで挙動が変わるようだし、
うまく指定しないと期待通りに動作しない。
複数のファイルを除外するには、都度”- -exclude file”としなければならない。
$ tar czvf backup.tar.gz . – -exclude old.log –exclude old2.log
除外の対象が多い場合はリストに書き出し、”- -exclude-from listfile”とする。
$ tar czvf backup.tar.gz . – -exclude-from listfile
- -excludeはXでも可。
$ tar zcvfX dir.tar.gz listfile data
ところで格納時にファイルを除外するのではなく、全て格納してから指定のファイルを
- -deleteオプションで消去する、という発想も「あり」かな。。
格納したファイルの一覧を表示する
$ tar tzvf backup.tar.gz
展開する時。以下はカレントディレクトリに展開される。
$ tar xzvf backup.tar.gz
指定のディレクトリ内に展開させる
$ tar xzvf backup.tar.gz -C backup_dir
tarをsshでリモートホストへ転送
ファイル名に「-」を指定すると出力先のファイルが標準出力になるため、
パイプラインを利用して他のコマンドへ引き渡すことができる。
以下はローカルホストからリモートホストexample.netへuser001ユーザが転送する例。
ファイルの例
$ tar czvf – filename | ssh user001@example.net ‘cat > /tmp/filename.tar.gz’
ディレクトリの例
$ tar czvf – data |ssh user@example.net ‘tar zxvf –C /tmp/backup’
しかしこのやり方はリソースを消費するらしく、定常的なバックアップにはあまり
向かない様子。