마지막 백업 실행 이후 수정된 파일 백업

마지막 백업 실행 이후 수정된 파일 백업

파일을 마지막으로 수정된 속성 및 현재 날짜와 비교해야 하는 백업 스크립트(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텍스트에서 실제로 원하는 것은 스크립트의 두 실행 사이의 변경 사항을 얻는 것이라고 생각합니다.

스크립트의 압축, 사용자 상호 작용 등은 변경되지 않고 그대로 유지될 수 있습니다. 하위 디렉터리가 아닌 현재 디렉터리의 파일만 필요한 경우 -maxdepth 1.

관련 정보