rsync

オプション

-v:詳細

-r:データを再帰的にコピーします(データの転送中にタイムスタンプとパーミッションは保存されません)

-a:アーカイブモードでは、アーカイブモードでファイルを再帰的にコピーすることができます。シンボリックリンク、ファイルのパーミッション、ユーザとグループの所有権、タイムスタンプも保存されます

-z:ファイルデータを圧縮する

cp の代わりとして使う

rsync は cp コマンドの上位互換として使うことができ、特に大きなファイルのコピーに役立ちます

rsync -P source destination

-P オプションは --partial --progress と同じで、一部ずつファイルを転送して、転送中にプログレスバーを表示します。

ディレクトリを再帰的にコピーしたいときは -r --recursive オプションを使用し、相対パス名を使いたい時は -R を使います (転送先のフォルダでフォルダ全体の階層を再生成します

バックアップユーティリティとして使う

rsync プロトコルは簡単なバックアップ用途に使うことができ、最後にバックアップした時から変更が入ったファイルだけを転送します

自動バックアップ

このサンプルを使うには、スクリプトを /etc/cron.daily ディレクトリに作成して、インストール・設定がされている cron デーモンによって定期的にスクリプトは実行されます

vi  /etc/cron.daily/backup

#!/bin/bash
rsync -a --delete /folder/to/backup /location/of/backup &> /dev/null
-a
ファイルをアーカイブする。ファイルの属性も保存 (ただし ACL やハードリンク、ケイパビリティなどの拡張属性は除外)
--delete
バックアップ元で削除されたファイルはバックアップ先でも同じように削除する

ここで、/folder/to/backup はバックアップしたいものに (例えば /home)、/location/to/backup はバックアップの保存先に変更します (例えば /media/disk)。

最後に、スクリプトを実行可能にします:

chmod +x /etc/cron.daily/backup

SSH を使った自動バックアップ

SSH を使ってリモートホストにバックアップする場合

vi /etc/cron.daily/backup

#!/bin/bash

rsync -a –delete -e ssh /folder/to/backup remoteuser@remotehost:/location/to/backup &> /dev/null

-e ssh rsync に SSH を使うことを教える

remoteuser ホスト remotehost のユーザー

-a -rlptgoD オプションと同義 (recursive, links, perms, times, group, owner, devices)

一週間ごとに差分バックアップ

完全なバックアップを作成して一週間ごとに差分バックアップを行う rsync のオプションです

vi /etc/cron.daily/backup

#!/bin/bash

DAY=$(date +%A)

if [ -e /location/to/backup/incr/$DAY ] ; then
  rm -fr /location/to/backup/incr/$DAY
fi

rsync -a --delete --inplace --backup --backup-dir=/location/to/backup/incr/$DAY /folder/to/backup/ /location/to/backup/full/ &> /dev/null

--inplace --partial で指定先のファイルを直接更新

関連広告記事

シェアする

  • このエントリーをはてなブックマークに追加

フォローする