सवाल पुरानी तारीख के साथ लक्ष्य निर्देशिका बनाने rsync


मेरे पास एक स्क्रिप्ट है जो बैकअप को स्वचालित करती है - मेरे xubuntu 12.04LTS वर्कस्टेशन के घंटे के स्नैपशॉट्स। यह तिथि और समय के अनुसार नामित एक निर्देशिका बनाता है, यानी: 20140316-1033, आज सुबह 10:33 का प्रतिनिधित्व करता है, 16 मार्च। बैकअप बेकार ढंग से काम करता है, कड़ी मेहनत के रूप में काम करना चाहिए।

यह दो दिन पहले बदल गया था। मैं इसे मैन्युअल रूप से चला रहा था - स्पोरैडिक रूप से, और आखिरकार मैंने क्रोन को कार्य स्वचालित करने का फैसला किया, इसे एक घंटे में चला रहा था। मैंने लिपि के भीतर शब्दशः बदल दी, प्रत्येक बैकअप के साथ प्रतिलिपि बनाई जा रही थी, इसके बारे में कुछ बदलाव। तो, मैंने स्पष्ट रूप से कुछ बदल दिया, और मैं यह नहीं समझ सकता कि मैंने क्या किया।

जब मैं लक्ष्य निर्देशिका की निर्माण तिथि की जांच करता हूं, तो यह हमेशा 14 मार्च, 2014 को 11:23 बजे होता है। जब तक मैं झुकाव शुरू नहीं किया, यह ठीक से काम किया। तब से, निर्माण की तारीख स्थिर हैं।

इस वजह से, मुझे स्क्रिप्ट को बदलना पड़ा ताकि स्नैपशॉट के लिए सबसे हालिया स्नैपशॉट निर्धारित करने के लिए निर्देशिकाओं की निर्माण तिथियों के बजाय यह निर्देशिका नामों का उपयोग करे।

जो भी आप मुझे इंगित कर सकते हैं उसकी बहुत सराहना की जाएगी। अग्रिम में धन्यवाद।

SOURCE="/"
NOW=$(date +"%Y%m%d-%H%M")
BASE="/media/backup-internal/furgesson"
PREVIOUS=$(ls -r $BASE | head -1)

if [[ "$NOW" != "$PREVIOUS" ]];
then
    TARGET="$BASE/$NOW"
    LINK="$BASE/$PREVIOUS"
    OPTIONS="-avH --delete --link-dest=$LINK"
    rsync $OPTIONS --include-from '/home/carolyn/BackupScripts/include-list.txt' --exclude-from '/home/carolyn/BackupScripts/exclude-list.txt' $SOURCE $TARGET
fi

और यहां निर्देशिका सूची की तरह दिखता है ...

total 124
drwxr-xr-x 25 root root 4096 Mar  7 04:04 20140314-0445
drwxr-xr-x 25 root root 4096 Mar 14 04:48 20140314-0512
drwxr-xr-x 25 root root 4096 Mar 14 04:48 20140314-0515
drwxr-xr-x 25 root root 4096 Mar 14 04:48 20140314-0821
drwxr-xr-x 25 root root 4096 Mar 14 04:48 20140314-0822
drwxr-xr-x 23 root root 4096 Mar 14 09:38 20140314-1013
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-1140
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-1314
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-2059
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-2128
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-2141
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-2144
drwxr-xr-x  3 root root 4096 Mar 14 11:23 20140315-0846
drwxr-xr-x  3 root root 4096 Mar 14 11:23 20140315-0848
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-0849
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-0856
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1125
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1135
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1138
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1405
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1409
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1433
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1533
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1633
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1733
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1833
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1933
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140316-0733
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140316-0833
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140316-0933
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140316-1033

2
2018-03-16 15:05


मूल




जवाब:


कुछ छोटे मुद्दे:

  1. आपको कभी पार्स नहीं करना चाहिए ls। उस ने कहा, इस मामले में, आपको लगता है कि आपकी लक्षित निर्देशिका में फ़ाइल नामों का पूर्ण नियंत्रण है ls एक विकल्प हो सकता है। हालांकि, मैं आपको उपयोग करने की सलाह देते हैं ls -tr तो समय के अनुसार क्रमबद्ध रूप से क्रमबद्ध करें:

    PREVIOUS=$(ls -tr $BASE | head -n 1)
    
  2. चलो आप पर एक नज़र डालें rsync विकल्प। -a के बराबर होती है -rlptgoD:

    -r, --recursive             recurse into directories
    -l, --links                 copy symlinks as symlinks
    -o, --owner                 preserve owner (super-user only)
    -g, --group                 preserve group
    -t, --times                 preserve modification times
    

    समस्या यह है -t, यह स्रोत फ़ाइलों के वास्तविक संशोधन समय को संरक्षित करता है, इसलिए मूल रूप से मूल फ़ाइलों के अंतिम संशोधन समय पर बैकअप बनाए जाने के समय यह बैकअप की संशोधन तिथि सेट नहीं करता है। बदलने के -a साथ में -rlog (हटाने के -t) उस समय को निर्धारित करने के लिए जो आप उम्मीद कर रहे हैं।


0
2018-03-16 16:14