들어오는 파일을 여러 폴더에 자동으로 복사한 다음 소스 파일을 제거합니다.

들어오는 파일을 여러 폴더에 자동으로 복사한 다음 소스 파일을 제거합니다.

소스 파일을 디렉토리에서 여러 디렉토리로 복사하고 파일을 복사한 후 소스 디렉토리에서 소스 파일을 제거하는 자동화된 스크립트를 알고 싶습니다.

.xml 파일이 저장되는 폴더가 하나 있습니다. 그래서 첫 번째 단계에서는 이 소스 폴더의 파일을 다른 두 폴더, 즉 폴더 1과 폴더 2로 복사하고 싶었습니다. 폴더 1은 파일을 백업 목적으로만 보관하기 위한 것이고 폴더 2는 요구 사항에 따라 xml 파일을 분할하기 위한 또 다른 스크립트를 실행하는 것입니다. 파일을 복사한 후 원본 폴더에서 파일을 제거합니다.

문안 인사

답변1

다음 bash 스크립트는 들어오는 새 파일의 소스 디렉터리를 모니터링합니다(즉, 기존 파일을 복사하거나 제거하지 않습니다.) 두 개의 대상 디렉터리에 복사한 다음 삭제합니다. 소스 디렉터리에서 새 파일을 받기 시작하기 전에 스크립트를 실행하고 계속 실행해야 합니다(즉, 스크립트는 이미 실행 중인 경우에만 새로 들어오는 파일을 포착합니다.) ... 스크립트는 다음을 사용합니다.inotifywait먼저 설치해야 하는 항목은 sudo apt install inotify-tools... 스크립트의 설명을 읽고 먼저 경로를 지정하십시오.

#!/bin/bash

# Specify the full path to the source directory in the line below (keep the last "/").
source_d="/full/path/to/directory/"

# Specify the fullpath to the first destination directory in the line below (keep the last "/").
destination_d1="/full/path/to/directory1/"

# Specify the full path to the second destination directory in the line below (keep the last "/").
destination_d2="/full/path/to/directory2/"

inotifywait -m -q -e close_write "$source_d" |

  while read -r path action file; do
    cp -- "$path$file" "$destination_d1$file"
    cp -- "$path$file" "$destination_d2$file"
    rm -- "$path$file"
  done

답변2

cpN-1번 사용 하고 마지막 mv으로 N번 사용합니다.

cp [files] [folder1] 
cp [files] [folder2]
...
cp [files] [folderN-1]
mv [files] [folderN]

관련 정보