ルートディレクトリとルートサブディレクトリのファイルの変更を確認し、新しいファイルに追加するスクリプトなどのスクリプトを作成する必要がありbash
ます。 tar.gzファイル名の末尾には、.sh
生成日(たとえば)を含める必要があります。monitor-17.06.2013.tar.gz
私はそれをしました:
tar -zcvf /home/monitor.tar.gz /var/www/html/monitor --exclude /var/www/html/monitor/cache /var/www/html/monitor/log
動作しますが、ディレクトリは/var/www/html/monitor/log
省略されず、ファイル名に日付が含まれず、新しいファイルを追加するか、ファイルを変更するセクションがありません。その方法がわからないからです。
編集:私の要件を明確にするために さて、ここでユーザーのいくつかのコメントのために私が探しているものを残すように努力します。
Day1: 2013-06-15
Directory: /var/www/html/monitor
Backup File Created: monitor-2013-06-15.tar.gz (contains all the content of /monitor folder)
Day2: 2013-06-16
Directory: /var/www/html/monitor
Files Changed:
/var/www/html/monitor/file1.php
/var/www/html/monitor/log/file2.php
/var/www/html/monitor/web/file3.php
Files Added:
/var/www/html/monitor/index.php
Backup File Created: monitor-2013-06-16.tar.gz (contains **only** the files index.php, file1.php, file2.php and file3.php)
Day3: 2013-06-17
Directory: /var/www/html/monitor
Files Changed:
/var/www/html/monitor/index.php
Backup File Created: monitor-2013-06-17.tar.gz (contains **only** the file index.php)
最初のバックアップには常にすべてが含まれますが、残りのバックアップには変更された最新のファイルのみを含める必要があり、その他のファイルは含まれません。
答え1
ファイル名に現在の日付を挿入するには、date
次のように入力します。コマンドの置き換え。
tar -czf monitor-$(date -d %Y-%m-%d).tar.gz …
私は、次の理由で日付に年 - 月 - 日形式を使用することをお勧めします。辞書の順序は、米国の月 - 日 - 年と残りの国の日 - 月 - 年の間に混同する危険はありません。世界;これはISO規格です。
複数のディレクトリを除外するには、各ディレクトリに対して繰り返す必要があります。アーカイブに含めるパスを--exclude
作成する場合。tar -czf monitor.tar.gz --exclude dir1 dir2
dir2
dir1
--exclude
tar -czf monitor-$(date -d %Y-%m-%d).tar.gz --exclude /var/www/html/monitor/cache /var/www/html/monitor/log /var/www/html/monitor
特定の日付以降に変更されたファイルを保存するには、この--newer
オプションを渡してください。参照ファイルまたは日付を指定できます。タイムスタンプファイルを使用する方がはるかに安定しています。各バックアップの前にファイルを作成し、前のバックアップのタイムスタンプファイルを次のバックアップへの参照として使用します。
touch monitor-backup.timestamp.new
tar … --newer=./monitor-backup.timestamp
mv -f monitor-backup.timestamp.new monitor-backup.timestamp
あなたはあなた自身の増分バックアップシステムを運営しているようです。これを安定して行うことは非常に困難です。次の既存のバックアップアプリケーションを使用することをお勧めします。二重性。
答え2
省略されたディレクトリでは、--exclude
各ディレクトリに対応するオプションを使用する必要がありますが、それ以降のすべての項目を除外するわけではありません。一部のコマンドはコンマ区切り値を使用しますが、すべてではありません。
tar -zcvf /home/monitor.tar.gz /var/www/html/monitor --exclude /var/www/html/monitor/cache --exclude /var/www/html/monitor/log
日付部分を追加する場合は、探している内容の説明に基づいて次のものを使用できると思います。
-d, --diff, --compare
find differences between archive and file system
編集:これを行う簡単なスクリプトは次のとおりです。エラーチェックなどはありませんがスタートです。
NEW_FILE="monitor.`date +%d.%m.%Y`.tar.gz"
PREV_FILE={However you want to find this}
tar cf $NEW_FILE `tar --diff -f $PREV_FILE | awk --field-separator=: '{print $1}' | uniq`