스트리밍은 두 디렉터리의 내용을 비교합니다.

스트리밍은 두 디렉터리의 내용을 비교합니다.

스트리밍(하나의 명령 또는 스크립트에서)을 작업으로 만드는 방법:

  • 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

다음 두 가지 방법으로 수행할 수 있습니다.

  1. 소프트 링크 사용

    대상 폴더에 소스의 다른 복사본을 얻으려면 이 명령을 사용하십시오.

    ln -s  source destination
    

    하지만 이 경우 소스 파일이나 디렉터리가 삭제되면 링크가 깨지고 해당 링크에 액세스할 수 없게 됩니다.

  2. rsync 사용

    rsync -avzh sourcepath destinationpath
    

    이 명령은 소스와 대상을 자동으로 동기화합니다. 이 명령에 대해 crontab을 1분 동안 예약하여 지속적으로 확인하고 업데이트합니다.

관련 정보