저는 PHP 프로젝트의 파일을 많이 변경했으며 이러한 변경 사항을 FileZilla FTP를 통해 서버에 푸시하고 싶습니다. 모든 파일을 푸시하는 대신 지난 14일 동안 수정된 파일을 찾아서 /ModifiedFiles
폴더 구조를 유지하면서 폴더에 복사하고 싶습니다. 이렇게 하면 폴더의 내용을 /ModifiedFiles
FileZilla로 드래그하기만 하면 해당 폴더에 필요한 모든 파일을 덮어쓰게 됩니다.
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에서는 제대로 작동하지 않지만 pax
OS/X에서는 동일한 문제가 발생하지 않을 수 있습니다.
cpio
(의 조상 )을 사용하여 pax
비슷한 작업을 수행 할 수 있지만 cpio
OS/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