Rsync: কেবল টাইমস্ট্যাম্পগুলির অনুলিপি করা


42

বর্তমানে আমার কাছে দুটি ডিরেক্টরি এ / এবং বি / রয়েছে যা টাইমস্ট্যাম্পগুলি বাদ দিয়ে প্রতিটি ক্ষেত্রে অভিন্ন। সুতরাং আমি যদি আদেশটি চালাই:

rsync --dry-run -crvv A/ B/

তারপরে সমস্ত ফাইলকে "uptodate" হিসাবে চিহ্নিত করা হবে, যেখানে আদেশটি রয়েছে:

rsync --dry-run -rvv A/ B/

দেখায় যে সমস্ত ফাইল এ / থেকে বি / তে অনুলিপি করতে হবে।

আমার প্রশ্নটি হ'ল: আমি জানি যে ফাইলগুলি অভিন্ন (বিষয়বস্তুগুলির ক্ষেত্রে), তারপরে বি / তে ফাইলগুলির টাইমস্ট্যাম্পগুলি সেট করার জন্য কোনও উপায় আছে (বিএসআইএনসি বা অন্যথায়) ফাইলগুলির টাইমস্ট্যাম্পগুলির অনুরূপ এ /, এ / বি থেকে সমস্ত ফাইল অনুলিপি না করে?

ধন্যবাদ


যদি আপনি জানেন যে ফাইলগুলি অভিন্ন, তবে আপনার প্রয়োজনীয় তারিখ / সময় স্ট্যাম্পটি পাওয়ার জন্য কেন সেগুলি অনুলিপি করার প্রয়োজন নেই?
টিম

3
@ টিম: সম্ভবত প্রচুর ডেটা রয়েছে।
রিচার্ড

উত্তর:


75

-t(টাইমস্ট্যাম্পগুলি সংরক্ষণ করুন) ব্যবহার করে এবং --size-onlyকেবল আকারের ফাইলগুলির তুলনা করবে। যদি আকারটি মেলে, আরএসসিএনসি ফাইলটি অনুলিপি করবে না তবে যেহেতু -tনির্দিষ্ট করা আছে, এটি পুনরায় না ছাড়াই গন্তব্য ফাইলের টাইমস্ট্যাম্পটি আপডেট করবে।

-u(আপডেট) ব্যবহার না করা নিশ্চিত করুন কারণ এটি ইতিমধ্যে বিদ্যমান ফাইলগুলি এড়িয়ে যাবে এবং টাইমস্ট্যাম্পটি আপডেট করা সম্পূর্ণভাবে এড়িয়ে চলে।

আমার মূলত নতুন ড্রাইভে একটি গুচ্ছ ফাইল অনুলিপি করতে আরএসসিএনসি ব্যবহার না করার সমস্যা ছিল এবং তাই টাইমস্ট্যাম্পগুলি বর্তমান সময়ে আপডেট করা হয়েছিল। আমি নীচের কমান্ডটি একটি শালীন পরিমাণে সবকিছু সঠিকভাবে সিঙ্ক করতে ব্যবহার করেছি:

rsync -vrt --size-only /src /dest

2
আমি --existingনতুন ফাইলগুলির দুর্ঘটনাজনিত অনুলিপি রোধে যুক্ত করার পরামর্শ দিই ।
হালকা

1
পতাকা --archive(অথবা -a) অন্তর্ভুক্ত -r, -tএবং আরো অনেক কিছু :)
দোর

6

- সাইজ-শুধুমাত্র ব্যবহারের ফলে আরএসসিএনসি ফাইলের টাইমস্ট্যাম্পগুলির (এবং সেইজন্য ফাইলের সামগ্রীগুলি) মাপের সাথে তুলনা করা এড়িয়ে যায় the এটির সাথে - টাইমসের সংমিশ্রণ লক্ষ্যবস্তুতে টাইমস্ট্যাম্পগুলি ক্লোন করে দেবে।


3

আমি মনে করি এটি তৈরির জন্য rsync হ'ল সঠিক সরঞ্জাম তবে আপনি যদি কিছু স্ক্রিপ্ট চান তবে এটি তৈরির চেয়ে ভাল শুরু করতে পারে।

আপনি টাইমস্ট্যাম্পগুলি (অ্যাক্সেস বার) এর সাথে একটি ফাইল তালিকা পেতে পারেন:

find . -printf '"%p" %a\n' -type f > /tmp/times

এবং এটি থেকে উপযুক্ত সময় আপডেট আদেশগুলি পান:

 while read line; do echo touch -a -d \"${line#* }\" ${line%% *}; done < /tmp/times

এটি একটি সম্পূর্ণ স্ক্রিপ্ট নয় তবে একটি ভাল শুরুর জায়গা! :)


ধন্যবাদ। আমি মনে করি আমি সম্ভবত এই মুহুর্তের জন্য Rsync দিয়ে থাকব তবে আমি অবশ্যই ওয়েবে গিয়ে আপনার স্ক্রিপ্টের বিভিন্ন উপাদান শিখব, কারণ এটি ভবিষ্যতে কার্যকর হতে পারে।
আর্টেলা

এটাই আমার সমাধান বলে মনে হয়েছিল! আমার সংগীত লাইব্রেরিতে কিছু মেটা ডেটা যুক্ত করার সময়টি আমি সংরক্ষণ করতে চাই। তবে আপাতদৃষ্টিতে এটি ফাইলের নামের সাথে ফাঁকা স্থান পরিচালনা করতে পারে না):
বুর্কার্ডো

2

ব্যবহার করুন উৎস (যেমন /path/to/sourceস্পর্শ কমান্ডের জন্য রেফারেন্স হিসেবে) ডিরেক্টরি। শুধু cdআপনার টার্গেট ডিরেক্টরিতে এবং করতে

find -type f -exec touch -r /path/to/source/{} {} \;

আপনি আরএসআইএনসি দিয়ে উপ-দ্বিতীয় টাইমস্ট্যাম্পগুলি অনুলিপি করতে পারবেন না (এখনও)।

এটি ডিরেক্টরি এবং সিউডো ফাইলগুলির জন্যও কাজ করে (কেবল সরিয়ে ফেলুন বা পরিবর্তন করুন -type f)


অনুলিপি করার জন্য আমার প্রয়োজন ছিল বলে এটি আমার পক্ষে কার্যকর ছিল। আমি লক্ষ্য করেছি এটি সিটিটাইম অনুলিপি করে না, যা আমার ক্ষেত্রে ঠিক ছিল।
স্ন্যাপফ্র্যাক্টলপপ

শুধু 'টাচ' এর ম্যানপেজ পড়ুন। আপনি এই কমান্ডটি দিয়ে টাইম এবং এমটাইম উভয় সেট করতে পারেন।
27:25

হ্যাঁ, আমি জানি আপনি ব্যবহার করতে পারেন touch -arতবে এটি এখনও সিটিমে পরিবর্তন করে না। আমি মনে করি এটি খুব কমই কাঙ্ক্ষিত।
স্ন্যাপফ্র্যাক্টলপপ

আহ, আমি এখন সমস্যাটি দেখতে পাচ্ছি। ধন্যবাদ। হ্যাঁ, সিটিটাইম পরিবর্তন করা শক্ত এবং কেন জানি না।
নর্কে

1

ঠিক আছে, আপনি অবশ্যই একটি স্ক্রিপ্ট লিখতে পারেন যা একপাশ থেকে টাইমস্ট্যাম্প পড়ে এবং অন্যদিকে একই ফাইলটিতে সেট করতে স্পর্শ ব্যবহার করে।

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


ধন্যবাদ, আমি আরএসআইএনসি-র এই বৈশিষ্ট্য সম্পর্কে অসচেতন ছিলাম (এটি উইকিপিডিয়াতেও আলোচিত)।
আর্টেলা

0

আমার মতো লোকদের জন্য যারা ফাইলগুলি সংশোধন করতে চান এবং মূল টাইমস্ট্যাম্প ধরে রাখতে চান (যেমন আপনি নিজের সঙ্গীত লাইব্রেরির মেটা ট্যাগগুলি আপডেট করেন)।

এটি স্টোন দ্বারা সরবরাহিত সমাধানের ভিত্তিতে। যাইহোক, সময় পরিবর্তনের সময় এবং টাইমস্ট্যাম্পগুলি পুনরুদ্ধার করার জন্য একটি কার্যকরী স্ক্রিপ্ট সম্পর্কে। প্রথম পদক্ষেপটি প্রথম করুন, তারপরে আপনার ফাইলগুলির সাথে কাজ শুরু করুন।

  1. পুরানো টাইমস্ট্যাম্প সংরক্ষণ করুন । এটি বর্তমান ডিরেক্টরি থেকে পরিচালনা করে, সমস্ত লুকানো ফাইল বাদ দেয় এবং এটি অস্থায়ী ফাইলটিতে সংরক্ষণ করে /tmp/files। আপনি সর্বদা পরামিতি পরিবর্তন করতে পারেন, তবে -printf '"%t" "%p"\n'পরবর্তী touchকমান্ডটি যেহেতু এটি ব্যবহার করে তাই ভাল থাকুন ।

    find . ! -iname ".*" -printf '"%t" "%p"\n' -type f > /tmp/files

  2. আপনার ফাইলগুলি যতটা পছন্দ পরিবর্তন করুন

  3. এখন এমন একটি ফাইল তৈরি করুন যা আপনাকে টাইমস্ট্যাম্পগুলি পুনরুদ্ধার করতে সহায়তা করে:

    while read line; do echo touch -a -d $line >> job.sh; done < /tmp/times

  4. এবং পরিশেষে পরিবর্তিত ফাইলগুলিতে পুরানো তারিখগুলি প্রয়োগ করুন

    sh job.sh

ক্যাভ্যাট: নাম ফাঁক, বিশেষ অক্ষর সহ ফাইলগুলির জন্য কাজ করে তবে উদাহরণস্বরূপ কোনও ফাইল এতে $সাইন ইন করে না।


আপনার ফাইলের নামগুলিতে ব্যাকস্ল্যাশগুলি (কিছু) সমস্যা এড়াতে, ব্যবহার করুন read -r line। ভাল, সবসময়read সঙ্গে ব্যবহার করুন -r। এছাড়াও, আপনি job.shপ্রতিটি ফাইলের জন্য খোলার এড়াতে পারবেন । কমান্ডের শেষে পুনঃনির্দেশটি কেবল রাখুন:while read -r path; do echo touch -a -d $path ; done < /tmp/times > job.sh
হিগলো

২ য় ক্যাভেট: এই স্ক্রিপ্টটি টাইমস্ট্যাম্পগুলি ডিরেক্টরিগুলি স্থানান্তর করে না। (আচ্ছা, ওপি এর জন্য জিজ্ঞাসা করেনি।)
হ্যাগেলো

0

উইন্ডোজে কেবল টাইমস্ট্যাম্প অনুলিপি করার সর্বোত্তম উপায়:

  • ফাইলগুলির জন্য : এখানে বর্ণিত হিসাবে "টাচ" কমান্ডটি ব্যবহার করুন https://superuser.com উইন্ডোজ :

যে কোনও ফাইলের সর্বশেষ তৈরি / সংশোধিত / অ্যাক্সেস করা সময় স্ট্যাম্পটিকে অন্যটিতে অনুলিপি করতে, আপনি ব্যবহার করতে পারেন:

টাচ / সি / এম / এ / আর সোর্সফিল ডেস্টফিল

(টাচের এই সংস্করণটি উইন 32 কনসোল টুলবক্সের একটি অংশ http://www.stevemiller.net/apps/ )

রোবকপি "SOURCE_DIRECTORY" "DESTINATION_DIRECTORY" / ই / কপিআইএল / ডিসিপি: ড্যাট / এক্সএফ / আর: 10 / ডাব্লু: 5 / ভি / ইটিএ


-1

আরএসআইএনসি ম্যানুয়াল: man rsyncএকটি -tএবং -Nস্যুইচ তালিকাভুক্ত করে , তারা এগুলির সাথে বিস্মৃত হতে পারে।


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