Linux에서 특정 이름으로 새로 생성된 폴더에 파일 자동 복사

3385 단어 automationinotifywait
/home/에 readme.txt 파일이 있고 이름이 junk 또는 secret인 /home/johndoe/ 내에 생성된 모든 새 폴더에 복사되기를 원합니다.

요구 사항



inotifywait가 설치되어 있어야 합니다. sudo apt install inotify-tools

스크립트


  • 아래 내용으로 bash 파일 copier.sh를 만듭니다.

  •   #!/bin/bash
    
      inotifywait -m -r -e create,move ~/johndoe |
      while read dir op file
      do if [[ $op == "CREATE,ISDIR" && $file == 'junk' || $file == 'secret' ]]
      then cp ~/readme.txt "${dir}/${file}/readme.txt"
      elif [[ $op == "MOVED_TO,ISDIR" && $file == 'junk' || $file == 'secret' ]]
      then cp ~/readme.txt "${dir}/${file}/readme.txt"
      else :
      fi
      done
    


  • chmod +x copier.sh를 사용하여 스크립트를 실행 가능하게 만듭니다.
  • 데몬 및 감독자를 사용하여 스크립트 실행 유지

  • 코드 설명


  • inotifywait -m -r -e create,move ~/johndoe
  • -m : 1회 이후에도 스크립트 실행 유지
  • -r : 모든 폴더를 재귀적으로 감시
  • -e : 주시할 이벤트
  • create,move create는 파일/폴더가 생성될 때, move는 폴더 이름을 바꿀 때 사용됩니다
  • .
  • ~/johndoe : 감시 중인 폴더

  • do if [[ $op == "CREATE,ISDIR" && $file == 'junk' || $file == 'secret' ]]
  • 디렉토리가 생성되고 디렉토리 이름이 정크이거나 비밀인 경우에만 수행하십시오.

  • elif [[ $op == "MOVED_TO,ISDIR" && $file == 'junk' || $file == 'secret' ]]
  • 디렉토리 이름이 변경되고 디렉토리 이름이 정크이거나 비밀인 경우에만 수행하십시오.

  • cp ~/readme.txt "${dir}/${file}/readme.txt"
  • 홈 디렉토리에서 새로 만든 디렉토리로 readme.txt를 복사합니다
  • .


    메모



    기본 최대값은 8192입니다. /proc/sys/fs/inotify/max_user_watches에 작성하여 늘릴 수 있습니다.

    https://linux.die.net/man/1/inotifywait에서 자세히 알아보기

    좋은 웹페이지 즐겨찾기