이제 이것을 어떻게 표현해야 할지 알겠습니다만,
모든 최신 .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 $MYDIR
find .
이전 파일을 백업 디렉터리에 보관하는 경우 rsync --ignore-existing
.it를 사용할 수도 있습니다. 새 파일만 복사됩니다.
더 읽어보세요사람 동기화.