내 디렉토리에 다음 파일이 있습니다 data
.myfile1.txt
myfile2.jnx
myfile3.sur
다음 명령을 사용하여 위 디렉터리의 내용을 다른 위치에 복사했습니다.
scp data/* remotehost.example.com:/data/
그런데 명령을 실행한 후 디렉터리 내용을 동적으로 변경할 때 문제가 발견되었습니다. 이는 첫 번째 파일이 복사되는 동안 백그라운드에서 이 디렉터리를 처리하는 다른 응용 프로그램이 이 파일로 변경되는 것과 같습니다 myfile3.sur
.myfile3.sur1
*
명령을 실행하면 쉘이 해당 디렉토리의 모든 파일 이름으로 변환된다는 것을 알고 있습니다. 변경/업데이트된 파일도 포함하도록 Linux에 지시하는 방법이 있습니까?
답변1
직접적인 답변은 아니지만 다음을 사용하는 것이 좋습니다 rsync
.https://medium.com/@sethgoldin/a-gentle-introduction-to-rsync-a-free-powerful-tool-for-media-ingest-86761ca29c34
답변2
이름과 내용이 동일한 필수 파일이 전송되었는지 확인하려면 다음 논리를 사용하여 스크립트를 생성하세요.
mkdir data/temp.$$
cp data/* data/temp.$$
scp data/temp.$$/* remotehost.example.com:/data/
rm data/temp.$$
파일 복사본을 동일한 서버의 임시 디렉터리로 이동하면 나중에 전송할 때 파일을 선택할 수 있습니다.
노트백그라운드 프로세스가 지속적으로 파일을 변경하는 경우 이러한 프로세스와의 종속성을 설정해 보십시오.