특정 지점에서 트리 디렉터리 복사

특정 지점에서 트리 디렉터리 복사

이제 이것을 어떻게 표현해야 할지 알겠습니다만,

모든 최신 .zip 파일을 이 원본 폴더 내의 각 재귀 하위 디렉터리에 복사합니다.

"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Original"

예를 들어

"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Original/test1/zip11.zip"
"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Original/test1/zip12.zip"
"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Original/test2/zip21.zip"
"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Original/test2/test3/zip31.zip"
"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Original/test2/test3/zip32.zip"
"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Original/test2/test3/zip33.zip"

그러면 zip12.zip, zip21.zip, zip33.zip(각 디렉터리의 최신 파일)이 백업 폴더에 복사됩니다.

나는 이 작업을 수행하여 모든 내용을 이 디렉터리에 복사했습니다.

"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Backup"

그래서 그것은 다음과 같습니다:

"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Backup/zip12.zip"
"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Backup/zip21.zip"
"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Backup/zip33.zip"

원래 버전과 동일한 트리 구조를 사용하고 싶으므로 다음과 같습니다.

"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Backup/test1/zip12.zip"
"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Backup/test2/zip21.zip"
"/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Backup/test2/test3/zip33.zip"

누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

이것은 내 코드입니다.

#THE DIRECTORY THE ORIGINAL FILE IS STORED IN
MYDIR="/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Original"

#THE DIRECTORY THE BACKUP FILE WILL BE STORED IN
DEST="/Users/Stu/Documents/Hoffi Work/FTP Backup Shell Script/Backup1/"

#FIND ALL DIRECTORIES AND NAME TEMP DIRECTORY AS CURRENT DIRECTORY
find "${MYDIR}" -type d | while read CURRENTDIRECTORY;
    do 

        #FINDS THE NEWEST ZIP FILE IN T HE DIRECTORY
        NEWESTFILE=`ls -dtr1 "${CURRENTDIRECTORY}"/*.zip | tail -n 1`
        echo "NF = $NEWESTFILE"

        #CHECK IF FILE IS PRESENT
        if [ -z "${NEWESTFILE}" ] ; then
            echo "No file to copy"

        #CHECK IF FILE IS A DIRECTORY
        elif [ -d "${NEWESTFILE}" ] ; then
            echo "Newest file is a directory"

        #COPY NEWEST FILE TO DEST
        else
            echo "Copying ${NEWESTFILE} --> ${DEST}"
            cp -p "${NEWESTFILE}" "${DEST}"
        fi

    done

답변1

rsync대신 사용할 수 있습니다 cp.

rsync -R "${CURRENTDIRECTORY}"/"${NEWESTFILE}" "${DEST}"

출력 경로를 상대 경로 MYDIR(예 : )로 제한하려면 find Loop 전후에 디렉토리를 입력 test1/zip12.zip해야 합니다 .cd $MYDIRfind .

이전 파일을 백업 디렉터리에 보관하는 경우 rsync --ignore-existing.it를 사용할 수도 있습니다. 새 파일만 복사됩니다.

더 읽어보세요사람 동기화.

관련 정보