RSSync গন্তব্যে ফাইলগুলি মুছবে না


22

আমি এমন একটি ডিরেক্টরি আয়না করার চেষ্টা করছি যা সময়ের সাথে সাথে অন্য ডিরেক্টরিতে পরিবর্তিত হয়। আমার সমস্যাটি হল যে আরএসইএনসি ফাইলগুলি উত্স ডিরেক্টরিতে উপস্থিত না থাকলে গন্তব্যে মুছে ফেলছে না। এখানে একটি ডেমো স্ক্রিপ্ট:

#!/bin/sh

set -x

DIR1=/tmp/1
DIR2=/tmp/2

rm -rf $DIR1
rm -rf $DIR2

mkdir $DIR1
mkdir $DIR2

echo "foo" > $DIR1/a
echo "bar" > $DIR1/b

rsync -a $DIR1/* $DIR2

rm -f $DIR1/a

rsync -a --delete $DIR1/* $DIR2

ls -1 $DIR2

এখানে ফলাফল:

+ DIR1=/tmp/1
+ DIR2=/tmp/2
+ rm -rf /tmp/1
+ rm -rf /tmp/2
+ mkdir /tmp/1
+ mkdir /tmp/2
+ echo foo
+ echo bar
+ rsync -a /tmp/1/a /tmp/1/b /tmp/2
+ rm -f /tmp/1/a
+ rsync -a --delete /tmp/1/b /tmp/2
+ ls -1 /tmp/2
a
b

আপনি দেখতে পাচ্ছেন, দ্বিতীয়বারের মতো আরএসআইএনসি চালানোর পরে ফাইল "এ" গন্তব্য ডিরেক্টরিতে উপস্থিত রয়েছে, যা আমার প্রয়োজন তা নয়। আমি কি '- ডিলিট' বিকল্পটি অপব্যবহার করছি?


উত্স ডিরেক্টরিগুলির শেষে / * দেখুন। এটি আরএসসিএনকে কেবল ডিরেক্টরি নিজেই (এবং সেই অস্তিত্বের অস্তিত্বের ফাইলগুলির অনুপস্থিতি) না হয়ে কেবল সেই ফাইলগুলি বিবেচনা করবে।
ওয়াল্ট স্টোনবার্নার

উত্তর:


9

কারণটি হ'ল আপনি / টিএমপি / 1 / বি তে আরএসসিএন কল করছেন যা / টিএমপি / 1 / কোনও ফাইল বিবেচনা করবে না।

আপনার উদ্দেশ্য হ'ল ডিরেক্টরিটি / টিএমপি / 1 / রাইসিঙ্ক করা - আপনি যদি পৃথক ফাইলের পরিবর্তে "/ tmp / 1 /" কে উত্স হিসাবে ব্যবহার করেন তবে তা লক্ষ্য করবে যে ডিরেক্টরিটি থেকে "একটি" মুছে ফেলা হয়েছে এবং মুছে ফেলা হবে এটি লক্ষ্য থেকে।


23

সরান *। আরএসসিএন ম্যান পৃষ্ঠায় উল্লিখিত হিসাবে --deleteওয়াইল্ডকার্ড এন্ট্রিগুলির সাথে বিকল্পটি কাজ করে না।

পরিবর্তে এটি ব্যবহার করুন:

rsync -a --delete $DIR1/ $DIR2/

"- পুরোপুরি এটি আরএসসিএনকে প্রাপ্য পক্ষ থেকে বহির্মুখী ফাইলগুলি মুছে ফেলতে বলে (প্রেরণকারী পক্ষের নয়), তবে কেবল যে ডিরেক্টরিগুলি সিঙ্ক্রোনাইজ করা হচ্ছে তাদের জন্য You আপনি অবশ্যই আরএসসিএনকে পুরো ডিরেক্টরিটি প্রেরণ করতে বলেছেন (যেমন dirবা dir/) ডিরেক্টরিতে থাকা বিষয়বস্তুগুলির জন্য ওয়াইল্ডকার্ড ব্যবহার না করে (উদাঃ dir/*) যেহেতু ওয়াইল্ডকার্ডটি শেল দ্বারা প্রসারিত হয় এবং আরএসসিএনসি ফাইলগুলির প্যারেন্ট ডিরেক্টরি না হয়ে পৃথক ফাইল স্থানান্তর করার জন্য একটি অনুরোধ পেয়ে যায়। স্থানান্তর থেকে বাদ দেওয়া ফাইলগুলিও বাদ দেওয়া হয় না আপনি --delete-excludedঅপশনটি ব্যবহার না করা বা প্রেরণকারী পক্ষের সাথে মিলগুলি হিসাবে নিয়মগুলি চিহ্নিত না করা পর্যন্ত মুছে ফেলা হয়েছে (ফিল্টার রুলস বিভাগে সংশোধনকারীগুলি অন্তর্ভুক্ত / বাদ দিন দেখুন) "।


এই বৈশিষ্ট্যগুলি সেভেন এর উত্তর হিসাবে একই 2011 থেকে
রোয়ান হকিন্স

8

আপনি যদি দ্বিতীয় আরসিএনসি লাইনটি rsync -a --delete $DIR1/ $DIR2(* * বাদে) পরিবর্তন করেন তবে এটি কাজ করবে। কারণটি হ'ল শেলটি *প্রথম ডিরেক্টরিতে ফাইলের নামগুলিতে প্রসারিত হয় যা কেবলমাত্র আপনার ক্ষেত্রে খ, সুতরাং অনুপস্থিত ফাইলটি আরএসসিএনসি দ্বারা মোটেই বিবেচনা করা হবে না, কারণ যে আদেশটি কার্যকর করা হয় তা আসলে rsync -a --delete $DIR1/b $DIR2

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.