다음 작업으로 스트리밍하는 방법(하나의 명령 또는 스크립트로):
- 두 디렉터리 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
이 명령은 소스와 대상을 자동으로 동기화합니다. 지속적으로 확인하고 업데이트할 수 있도록 이 명령에 대해 1분 crontab을 예약하십시오.