
스트리밍(하나의 명령 또는 스크립트에서)을 작업으로 만드는 방법:
- dir1과 dir2 두 디렉터리의 내용(파일 및 폴더)을 비교합니다.
- dir1 디렉터리에 새 파일이 나타나면 해당 파일을 dir2에 복사하기 시작하고 동시에 핸들러를 사용하여 처리합니다.
diff -> 복사 -> some.sh 실행
답변1
아래 명령을 사용하여 dir1에서 file1.txt까지의 내용을 나열합니다.
ls -ltr | awk '{print $9}' > /var/tmp/file1.txt
file1.txt에 다음 내용이 포함되어 있습니다.
t1
1
l.sh
r.txt
l.py
l.txt
p.txt
아래 명령을 사용하여 dir2의 내용을 file2.txt로 나열하십시오.
ls -ltr | awk '{print $9}' > /var/tmp/file2.txt
t1
1
l.sh
r.txt
l.py
l.txt
이제 이 명령은 file1.txt와 비교하여 file2.txt에 없는 콘텐츠를 찾아서 디렉터리 2에 복사합니다.
awk 'NR==FNR {a[$1];next}!($1 in a) {print $1}' file2.txt file1.txt |
awk '{print "cp -rvfp" " " "directory1path”$1 " " "directory2path"}' |
sh
답변2
다음 두 가지 방법으로 수행할 수 있습니다.
소프트 링크 사용
대상 폴더에 소스의 다른 복사본을 얻으려면 이 명령을 사용하십시오.
ln -s source destination
하지만 이 경우 소스 파일이나 디렉터리가 삭제되면 링크가 깨지고 해당 링크에 액세스할 수 없게 됩니다.
rsync 사용
rsync -avzh sourcepath destinationpath
이 명령은 소스와 대상을 자동으로 동기화합니다. 이 명령에 대해 crontab을 1분 동안 예약하여 지속적으로 확인하고 업데이트합니다.