最後のバックアップの実行以降に変更されたファイルのバックアップ

最後のバックアップの実行以降に変更されたファイルのバックアップ

ファイルを最後に変更されたプロパティと現在の日付と比較する必要があるバックアップスクリプト(bashシェル - Fedora - VMware)を操作しています。最後の変更日がスクリプトの最後の実行日より前の場合は、それをバックアップする必要があります。戻る。

私はいくつか(awk、stat、およびgrep)を試しましたが、比較することができ、ファイルをバックアップする必要があるかどうかをスクリプトが決定できるようにすることはできません。

2つのケースステートメントに集中してください。

#! /bin/sh
echo "welcome to backup pro"
echo -e  "\n 1:Full \n 2:Incremental"
echo "Enter your choice"
  read choice
echo "Enter the files to be backup"
  read filetype
echo "Enter the destination folder"
  read destination
  case $choice in 
    1)
      echo "The selected backup type is Full backup"
      echo "Backing up $filetype files.."
      sleep 1
      cp *.$filetype /home/uone/backup_folder
      tar -zcvf archive_backup_folder.tar.gz backup_folder/   2>full-error.log
      mv archive_backup_folder.tar.gz /home/uone/backup_folder; cd /home/uone/backup_folder ;     rm *.$filetype
      sleep 1
      tail full-error.log
      break
    ;;
    2)
      echo "The backup you chose is Increment"
      ls -l | awk 'END {print $9 "\t" $8}'
      b=data "%H%M%S"   
        if [ $a -lt  $b ]; 
          then
          echo "This is under construction"
        fi
    ;;
  esac
exit 0

答え1

stat本当にしたい場合は、ループを使用してこれを実行できますが、次のようになります。find上手で一行にできます。スクリプトを実行するたびに特別なタイムスタンプファイルを生成し、次を使用してそのファイルより最新/以前のすべてのファイルを選択できます。

find -name "*.$filetype" ! -newer timestamp.file

*.$filetypeこれにより、パターンに基づいて名前が付けられ、!要求に応じてタイムスタンプファイルより古い(最新のファイルの代わりに)ファイルがすべてディレクトリツリーで検索されます。より役に立つような最新のファイルが必要な場合!

これらのファイルが見つかったら、find「-exec」を使用してそのファイルに対して特定のタスクを実行するように要求できます。

find -name "*.$filetype" -newer timestamp.file -exec cp '{}' "$destination" +

cp一致するすべてのファイルを名前付きディレクトリに引数として実行し、一致するすべてのファイルを$destinationそのディレクトリにコピーします。

各スクリプトの実行が終わったら、以下を使用して比較ファイルのタイムスタンプを更新できますtouch

touch timestamp.file

次回使用する比較ポイントです。スクリプトの実行中にファイルが変更される可能性がある場合は、さらに注意する必要があります。最初にタイムスタンプファイルを更新し、まず古いファイルとその属性をコピーします。cp -p、比較のために使用します(反対の場合も同様)。

-mtimeテストはタイトルのように現在の時間と比較するのに役立ちますが、実際にテキストでfind欲しいのは、スクリプトの2つの実行間の変更を得ることだと思います。

スクリプトの圧縮、ユーザーの対話などは変更されずにそのまま維持できます。サブディレクトリではなく現在のディレクトリのファイルのみが必要な場合-maxdepth 1

関連情報