一部のサブディレクトリを省略し、ディレクトリに.tar.gzを作成し、新しいファイルまたは変更されたファイルのみを追加する

一部のサブディレクトリを省略し、ディレクトリに.tar.gzを作成し、新しいファイルまたは変更されたファイルのみを追加する

ルートディレクトリとルートサブディレクトリのファイルの変更を確認し、新しいファイルに追加するスクリプトなどのスクリプトを作成する必要があり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 dir2dir2dir1--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`

関連情報