উত্স ফোল্ডার থেকে মুছে ফেলা ফাইলগুলিকে আমি কীভাবে আরএসসিএনসি মুছতে পারি?


194

আমি সম্প্রতি গেম সার্ভারগুলি হোস্ট করার জন্য উবুন্টু সার্ভারের সাথে একটি মেশিন স্থাপন করেছি। আমি প্রতিটি গেম সার্ভারের জন্য একটি ব্যাকআপ প্লাগইন ইনস্টল করেছি যা মেশিনে একটি নির্দিষ্ট ফোল্ডারে গেম ওয়ার্ল্ড ফাইলগুলির ঘন ব্যাকআপ তৈরি করে। বিকল্পটি cronআরএসসিএনসি ব্যবহার করে প্রতি রাতে আমার ড্রপবক্স ফোল্ডারে স্বয়ংক্রিয়ভাবে সেই ব্যাকআপগুলি অনুলিপি করার জন্য আমি একটি কার্যও স্থাপন করেছি -a

কয়েক মাস পরে আমার ড্রপবক্স অ্যাকাউন্টটি তার সঞ্চয়স্থানের সীমাতে পৌঁছেছে এবং আমি বুঝতে পেরেছি যে আমি এতগুলি ব্যাকআপ রাখতে সক্ষম হব না, তাই আমি গেম সার্ভারের ব্যাকআপ প্লাগইনটিকে এতগুলি ব্যাকআপ ধরে রাখতে না পেরে কনফিগার করেছি, তারপরে কয়েক দিন অপেক্ষা করেছিলাম কিনা তা দেখার জন্য পুরানো ব্যাকআপগুলি মুছুন কারণ এটি সাপ্তাহিক ভিত্তিতে করার সময়সূচী রয়েছে। ব্যাকআপ প্লাগইনটি শেষ পর্যন্ত এটির কাজটি করেছে এবং পুরানো ব্যাকআপগুলি মুছে ফেলেছে, তাই আমি rsyncক্রোন টাস্কটি পরবর্তীকালে উত্স ফোল্ডারের সাথে মেলে আমার ড্রপবক্স ফোল্ডার থেকে পুরানো ব্যাকআপগুলি মুছে ফেলার আশা করছিলাম , তবে এটি করা হয়নি। সুতরাং আমার কয়েকটি প্রশ্ন আছে:

  • ডিফল্টরূপে, নেই rsyncশুধুমাত্র যোগ উৎস ফোল্ডারে যুক্ত হয়েছে গন্তব্য ফোল্ডারটিতে ফাইলগুলি এবং পরিবর্তন যে ফাইল সোর্স ফোল্ডারে পরিবর্তন করা হয়েছে কিন্তু নয় মুছতে উৎস ফোল্ডার থেকে মোছা হয়েছে ফাইল?

  • যদি এটি হয় তবে এটি করার সর্বোত্তম উপায় rsyncকী? আমি চাই গন্তব্য ফোল্ডারটি উত্স ফোল্ডারটি পুরোপুরি প্রতিফলিত করবে এবং এর অর্থ উত্স ফোল্ডার থেকে মুছে ফেলা সমস্ত ফাইল মুছে ফেলা উচিত।

আমি ম্যানুয়াল পৃষ্ঠায় তালিকাভুক্ত কিছু অপশন দেখছি rsyncযার জন্য কৌশলটি করতে পারে, তবে যেহেতু আমি এর সাথে পরিচিত নই।

উত্তর:


227

লক্ষ্যবস্তুতে ফাইলগুলি মুছতে --deleteআপনার কমান্ডটিতে বিকল্পটি যুক্ত করুন । উদাহরণ স্বরূপ:

rsync -avh source/ dest/ --delete

15
উত্সটি একটি ডিরেক্টরি কিনা তা নিশ্চিত করুন। ব্যবহার source/* dest/কাজ করবে না।
টম সালেবা

3
আমি সেই ইভেন্টটি পেয়েছি --deleteবা --delete-afterএটি কিছু ত্রুটির কারণে মুছে ফেলা হবে না: "আইও ত্রুটির মুখোমুখি হয়েছে - ফাইল মোছা বাদ দেওয়া"। এই অ্যাড --ignore-errorsবিকল্পটি সমাধান করতে এবং ত্রুটিগুলি পৃথকভাবে ডিবাগ করতে
এমএইচটি

12
পুরোপুরি কাজ করে! যদিও এটি কাজ করছে, আমি -n, --dry-runচালানোর আগে সর্বদা ব্যবহারের বিকল্পটি সুপারিশ করব rsync, বিশেষত যখন এই ( --delete) এর মতো বিকল্পগুলির ক্ষেত্রে আসে to এটি কোনও সম্ভাব্য মাথাব্যথা এড়াতে হবে :)।
ivanleoncz

2
@ এমএইচটি: আপনার মন্তব্য ছাড়া কোনও উত্তর সম্পূর্ণ বলে মনে হচ্ছে না।
লনি সেরা 21

2
@TheBicentennialMan -a বোঝা -r
এক্স-ইউরি

45

Rsync যখন আপনি তার বিকল্প কিছু ব্যবহার কমান্ড অভ্যস্ত যেকোনো ফাইল মুছে ফেলতে deleteযে কমান্ড হবে। সুতরাং যদি কোনও ফাইল বা ফোল্ডার উত্সে যুক্ত হয় তবে এটি কোনও মোছা ছাড়াই লক্ষ্যবস্তুতে সিঙ্ক হবে।

আমি আপনাকে rsyncউত্স ফাইলগুলি থেকে ব্যাকআপ নেওয়ার find ... rmজন্য এবং ফাইলগুলির সময় বা আকারের জন্য ফাইলগুলি মুছে ফেলার জন্য ব্যবহার করার পরামর্শ দিচ্ছি :

rsync [options] SOURCE TARGET
find TARGET -maxdepth 1 -type f -mtime +60 -exec rm -f {} \;

উপরের কোডটি ব্লক করুন, উত্স থেকে একটি ব্যাকআপ তৈরি করুন এবং তারপরে সর্বশেষ পরিবর্তিত সময়টি 2 মাসের বেশি হওয়া প্রতিটি ফাইল মুছুন।

হালনাগাদ

আমি যেমন দেখতে পেয়েছি যে deleteবিকল্পগুলি কেবল টার্গেটের জন্য যে যদি কিছু ফাইল উত্স থেকে rsync --deleteসরানো হয় তবে সেগুলি টার্গেট থেকে সরান। আর deleteদ্বারা বিকল্প afterএবং before, সংশ্লিষ্ট man পৃষ্ঠা উল্লেখিত হিসাবে:

--delete-before         receiver deletes before transfer, not during

মানে হল:

  1. rsync SARCE থেকে সরানো TARGET থেকে ফাইলটি মুছুন।
  2. rsync ফাইল সিঙ্ক শুরু করুন।

--delete-after receiver deletes after transfer, not during

মানে হল:

  1. rsync ফাইল সিঙ্ক শুরু করুন।
  2. rsync ফাইলটি TARGET থেকে মুছুন যা সিঙ্ক করার পরে SOURCE থেকে সরানো হয়েছে।

দ্রষ্টব্য : --delete-{before/after}কেবলমাত্র টার্গেটে প্রয়োগ করুন।


1
উত্তর দেওয়ার জন্য ধন্যবাদ!! আপনি কি rsync এর জন্য "মুছুন" বিকল্পটি উল্লেখ করছেন? আমি কেন কেবল আরএসইএনসি-র জন্য "মুছুন" বিকল্পটি ব্যবহার করতে পারি না?
ব্যবহারকারী 254251

@ ব্যবহারকারী 254251, আপনি মুছে ফেলা ব্যবহার করেন, আরএসসিএন কমান্ড তত্ক্ষণাত ফাইল মুছে ফেলুন। তবে এক্ষেত্রে কোনও ত্রুটির জন্য আরও সময় রয়েছে।
shgnInc

যদি আমি সঠিকভাবে বুঝতে পারি তবে আপনি বলছেন যে ত্রুটিগুলি এড়ানোর জন্য আমার মুছে ফেলার কাজটি আরএসসিএনসি টাস্ক থেকে আলাদা করা উচিত। যদিও আমার একটা প্রশ্ন আছে। আরএসআইএনসি-র জন্য ম্যানুয়াল পৃষ্ঠাতে এমন কয়েকটি বিকল্পের তালিকা দেওয়া আছে যা উপস্থিতি মুছে ফেলা টাস্কটি অনুলিপি করার কাজটি আগে বা পরে চালিয়ে পৃথক করার উদ্দেশ্যে পরিবেশন করে। উদাহরণস্বরূপ, আমি দুটি অপশন দেখতে পাচ্ছি - ডেলিটেল-বিফোর এবং --ডিলেট-পরে। এই বিকল্পগুলির সাথে আরএসএনসিঙ্কের আপনার বর্ণিত পদ্ধতির মতোই কোনও প্রভাব থাকবে? আমি ম্যানুয়াল পৃষ্ঠায় প্রতিটি বিকল্পের সম্পূর্ণ বিবরণ পড়েছি তবে বর্ণনায় কিছু তথ্য রয়েছে যা আমি বুঝতে পারি না।
ব্যবহারকারী 254251

@ ব্যবহারকারী 254251, উত্তর আপডেট হয়েছে। যদি সময় সীমাবদ্ধতা দ্বারা লক্ষ্য থেকে ফাইল মুছে দিন একটি উপায় আমি জানি না rsync
shgnInc

ধন্যবাদ! তাহলে আপনি কি মনে করেন যে আমি যদি কেবলমাত্র --delet-before বিকল্পটি ব্যবহার করি তবে আমি ত্রুটিগুলি থেকে নিরাপদ? আমি একটি সময়সীমা নির্দিষ্ট করে দিচ্ছি না তাই আরএসসিএনসি মোছার পর্যায়ে স্থানান্তর পর্যায়ে বিলম্ব হলে আমার চিন্তা করার দরকার নেই। আরএসআইএনসি প্রতিদিন একবার চালায় এবং পরবর্তী সিঙ্কের আগে ব্যাকআপ ফাইলগুলি সিঙ্ক করার জন্য এটি যথেষ্ট সময়সাপেক্ষ, সুতরাং আমারও সিঙ্কের সময়-সীমাবদ্ধ করার দরকার নেই।
ব্যবহারকারী 254251

6

এই কমান্ডটি ইনক্রিমেন্টের ডেটা অনুলিপি করবে এবং এটিকে দূরবর্তী সার্ভারের সাথে সিঙ্কে রাখবে।

  1. এটি কেবলমাত্র ইনক্রিমেন্টাল ডেটা অনুলিপি করবে।
  2. উত্স থেকে কোনও ডেটা মুছে ফেলা হলে এটি মুছে ফেলা হবে।
  3. গন্তব্যস্থলে কোনও ডেটা মুছে ফেলা হলে এটি উত্স থেকে আবার অনুলিপি করবে।
  4. মূলত এই কমান্ড উভয় পরিবেশকে সমন্বয় করে রাখবে।

rsync -avWe ssh --delete-before (source) root@localhost:(destination) rsync -avW --delete-before -e ssh (source) root@localhost:(destination)

উদাহরণ:

rsync -avWe ssh --delete-before /data root@192.168.254.254:/backup
rsync -avW --delete-before -e ssh /data root@192.168.254.254:/backup

2
আমি মনে করি -W এটি কেবলমাত্র ইনক্রিমেন্টাল ডেটা অনুলিপি করে না তবে সর্বদা পুরো ফাইলগুলি অনুলিপি করে।
তুলিনাস কর্ডোভা

এই আদেশটি কার্যকর করে আমি এই ত্রুটিটি পেয়েছি: rsync: Failed to exec --delete-before: No such file or directory (2)
জেফ টিয়ান

1

সেখানে একটা rsync scync সময় কোনো ত্রুটি হয়ে থাকেন, তাহলে rsync সঠিকভাবে, ফাইল এটা থাকা উচিত মুছে যাবে না এমনকি যদি আপনি ব্যবহার --delete, --delete-afterঅথবা --delete-before

এই কারণেই আরএসসিএন ত্রুটিগুলি সমাধান করা গুরুত্বপূর্ণ important

আমার বেশিরভাগ --permsত্রুটিটি একটি নন-লিনাক্স ফাইল সিস্টেমের সাথে সিঙ্ক করার সময় বিকল্পটি ব্যবহার করার কারণে হয়েছিল । আমি যখন এর --permsসাথে প্রতিস্থাপন করেছি --no-perms, তখন ত্রুটিগুলি চলে গেছে এবং তারপরে মুছে ফেলার কাজ।

--permsঠিক আছে আপনি যখন লিনাক্স ফাইল সিস্টেম থেকে অন্য একটি লিনাক্স ফাইল সিস্টেমে সিঙ্ক করছেন, তবে আপনি যদি লিনাক্স থেকে একটি নন-লিনাক্স ফাইল সিস্টেমে (এনটিএফএস, এফএটি) সিঙ্ক করছেন, --permsত্রুটি ঘটায় কারণ rsync একটিতে লিনাক্সের অনুমতি সেট করতে পারে না নন-লিনাক্স ফাইল সিস্টেম । আবার, ত্রুটিগুলি = কোনও মুছুন।

- যখন একটি অ লিনাক্স পার্টিশন সিঙ্ক, আমি ব্যবহার --no-permsসেই ত্রুটিগুলি এড়ানোর যে অন্তর্ঘাত --delete, --delete-afterঅথবা --delete-before

যদি আপনি এর পরেও ত্রুটি পেয়ে থাকেন এবং কীভাবে কীভাবে এই ত্রুটিগুলি করা যায় তা অনুধাবন করতে না পারেন, আপনি একটি কমান্ড চালাতে পারেন যা সিঙ্ক-এর বাইরে থাকা ফাইলগুলি মুছতে উত্সর্গীকৃত:

sudo rsync -r --delete --existing --ignore-existing --ignore-errors --progress /path/to/source/ /path/to/destination

উপরের কমান্ডটি সিঙ্কের বাইরে থাকা সামগ্রীগুলি মুছে ফেলবে, তবে কোনও ফাইল সিঙ্ক করবে না। সুতরাং, এর পরে আপনার আবার সিঙ্ক করা উচিত। এই আদেশটি এই উত্তরটির ভিত্তিতে নয়, আমি --ignore-errorsযুক্তিটি যুক্ত করেছি , তাই ত্রুটি থাকলেও এটি মুছবে।


1
ভকভগক! আমি এই প্রশ্নের মূল লেখক 5 বছর আগে। আপনি এটি পোস্ট করে আমি সত্যিই আনন্দিত, আমি নিকট ভবিষ্যতে একটি এনটিএফএস ড্রাইভের সাথে সিঙ্ক করার পরিকল্পনা করেছিলাম এবং আমি সম্ভবত অনুমতি ত্রুটিতে চলে যাব কারণ আমি "-a" বিকল্পটি ব্যবহার করার পরিকল্পনা করছিলাম আরএসআইএনসি, যা অনুমতিগুলি সিঙ্ক করে (অন্যান্য জিনিসগুলির মধ্যে)। সুতরাং আমি আমার নোটগুলিতে "--no-perms" যুক্ত করেছি। আমি এখন আরএসইএনসি -a - না-পারমস - ডিলিট-আগে ব্যবহার করার পরিকল্পনা করছি। আমার একটি প্রশ্ন আছে: সিঙ্কের আগে মুছে ফেলা চালিয়ে ফাইল মুছে ফেলার সমস্যাটি - মুছে ফেলার আগে-এড়ানো যাবে না? ভেবেছিল সেটাই এর উদ্দেশ্য।
ব্যবহারকারী 254251

@ ব্যবহারকারী 254251 - আমি নিশ্চিত নই। আমি অনুমান করি যে এটি সত্যিই "আগে মুছে ফেলা হবে" কত তাড়াতাড়ি নির্ভর করে depend যদি এটি মুছে ফেলা শুরু হওয়ার আগে কোনও ত্রুটির মুখোমুখি হয় তবে আপনার ভুল হয়ে গেছে। আপনার কাছে আমার পরামর্শটি হ'ল এনটিএফএস এড়াতে পারবেন যতক্ষণ না আপনি নিজের পাছায় তীব্র ব্যথা পছন্দ না করেন :)। এনটিএফএস থেকে এনটিএফএস সূক্ষ্মভাবে কাজ করে। এনটিএফএস থেকে লিনিক্স ভাল কাজ করে। "লিনাক্স ফাইল সিস্টেম" থেকে "নন-লিনাক্স ফাইল সিস্টেম" এড়িয়ে চলুন; ডিলিটগুলি সঠিকভাবে কাজ করে তা নিশ্চিত করতে এটি খুব ব্যথার। আপনি এটি সম্পাদন করতে পারেন, তবে আমি সিদ্ধান্ত নিয়েছি যে গন্তব্য ড্রাইভকে কেবল এক্সটি 4 রূপে ফর্ম্যাট করা বনাম ঝামেলার পক্ষে মূল্য নয়।
লনি সেরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.