rsync फ़ाइल 1 सप्ताह से अधिक नई है


24

मैं सर्वर A से rsync को 7 दिनों से अधिक नया होने पर सभी फ़ाइलों को कॉपी करने के लिए चलाना चाहता हूं।

find . -mtime -7

मैं सर्वर B पर फ़ाइलों को हटाना नहीं चाहता।


b) आप कितनी बार rsync चलाते हैं?

जवाबों:


30

यह आपको एक ठोस तरीके से प्राप्त करना चाहिए

rsync -RDa0P \
    --files-from=<(find sourcedir/./ -mtime -7 -print0) \
    . user@B:targetdir/

यह डिवाइस नोड्स, अनुमतियां, टाइमस्टैम्प की प्रतिलिपि बनाता है। मुझे पूरा यकीन है कि -H विकल्प --files-from के साथ सटीक नहीं होगा


23
रिमोट फिल्टर के रूप में इसे सेट करने के लिए:rsync -avn --files-from=<(ssh user@A 'find /path/on/A/ -mtime -7 -type f -exec basename {} \;') user@A:/path/on/A/ user@B:targetdir
साइबरबेस्ट

मैं साइबरटैस्ट की टिप्पणी के लिए एक सुधार जोड़ना चाहता हूं। शायद मेरा अपने से अलग पर संदर्भ है, लेकिन मैं समय के मापदंड को देखते हुए एक दूरस्थ सर्वर से सरल निकालने की कोशिश कर रहा था। तो, सर्वर A मेरा गंतव्य है और सर्वर B मेरा स्रोत है, फिर: rsync -avn --files-from = <(ssh user @ A '/ पथ / / / / -mtime -7 -type f -execenename पर {} \; ') उपयोगकर्ता @ बी: / / पथ / इन / सर्वर / ए नोटिस केवल स्रोत के लिए एक अग्रणी / है। Thefiles- से आप के लिए सापेक्ष पथ का ख्याल रखता है। यदि आपको संदेह है तो आदमी rsync का उपयोग करें और --files- सेक्शन को देखें।
einarc

@cybertoast basenameआपके आदेश में क्या अर्थ है? क्या आप कृपया समझा सकते हैं?
केमट रोची

@KematRochi - "basename, dirname - वापसी फ़ाइलनाम या पथनाम का निर्देशिका भाग"। उम्मीद है की वो मदद करदे।
साइबरटैस्ट

6

मैंने यह स्क्रिप्ट साइबरटैस्ट की टिप्पणी के आधार पर लिखी है जो एक रिमोट सर्वर से लोकल में सिंक करने के लिए है।

आप स्क्रिप्ट को ड्राई रन के लिए ./script.sh 3या उसके साथ कॉल कर सकते ./script.sh 3 dryहैं।

#!/bin/bash
TIME=$1
DRYRUN=$2

if [[ -z $TIME ]]; then
  echo "Error: no time argument."
  echo "Please enter the number of days to sync."
  exit 1
fi

if [[ $DRYRUN = "dry" ]]; then
  DRYRUNCMD="--dry-run"
  echo "Dry run initiated..."
fi

rsync -avz $DRYRUNCMD --files-from=<(ssh \
    user@remote "find path/to/data/ \
    -mtime -$TIME ! -name *.mkv -type f \
    -exec ls $(basename {}) \;") \
  user@remote:. .
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.