폴더 구조를 유지하면서 수정된 파일을 복사하는 방법

폴더 구조를 유지하면서 수정된 파일을 복사하는 방법

저는 PHP 프로젝트의 파일을 많이 변경했으며 이러한 변경 사항을 FileZilla FTP를 통해 서버에 푸시하고 싶습니다. 모든 파일을 푸시하는 대신 지난 14일 동안 수정된 파일을 찾아서 /ModifiedFiles폴더 구조를 유지하면서 폴더에 복사하고 싶습니다. 이렇게 하면 폴더의 내용을 /ModifiedFilesFileZilla로 드래그하기만 하면 해당 폴더에 필요한 모든 파일을 덮어쓰게 됩니다.

Windows를 사용하는 경우 다음 코드 줄을 실행하면 원하는 작업이 수행됩니다.

xcopy RUF_Donation_Web ModifiedFiles /S /V /I /R /D:02-09-2016

Mac(OS X Yosemite)의 Bash 터미널에서 이 작업을 어떻게 수행합니까?

답변1

cpio이는 또는 다음의 일반적인 작업입니다 pax.

find . -type f -mtime -14 -print0 | pax -0 -rw /ModifiedFiles

-l이 옵션을 사용하여 복사본 대신 링크를 만들 수도 있습니다 . 이 명령은 Debian에서는 제대로 작동하지 않지만 paxOS/X에서는 동일한 문제가 발생하지 않을 수 있습니다.

cpio(의 조상 )을 사용하여 pax비슷한 작업을 수행 할 수 있지만 cpioOS/X에서의 구현은 임의의 파일 이름을 허용하는 / 옵션을 지원하지 않는 것 같습니다 -0. --null파일 이름에 개행 문자가 포함되어 있지 않다는 것을 알고 있는 경우에도 다음을 수행할 수 있습니다.

find . -type f -mtime -14 | cpio -dp /ModifiedFiles

Debian(GNU) 및 OS/X 버전 cpio모두 -l복사본 대신 링크를 생성하는 옵션이 있습니다. (데비안은 잘 작동하는 것 같습니다).

답변2

달성하려는 것은 rsync에 내장되어 있습니다. 당신은 할 수 있습니다 rsync -a /source /dest. 이를 간단한 스크립트에 넣고 크론 작업으로 추가할 수 있습니다. 복사된 내용에 대한 로그를 유지하려면 --log-file=[File]옵션을 추가할 수 있습니다. 자세한 내용은 여기에서 확인할 수 있습니다.http://linux.die.net/man/1/rsync

관련 정보