tarの基本とsshでの転送

1月 2, 2010

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’


しかしこのやり方はリソースを消費するらしく、定常的なバックアップにはあまり
向かない様子。


Categories: Linuxコマンド