特定のポイントからツリーディレクトリをコピーする

特定のポイントからツリーディレクトリをコピーする

さて、これをどのように表現すべきかわかりますが、

すべての最新の.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を使用することもできます。新しいファイルのみがコピーされます。

もっと読む人の同期

おすすめ記事