লিনাক্সের এমডিটাইম ধরে ফোল্ডার এমভি করবেন কীভাবে?


12

আমি সেন্টওএস 5.5 ব্যবহার করছি এবং ফোল্ডার একটি বৃহৎ পরিমাণ সরাতে চাই এক ভলিউম মধ্যে , তাদের ধারনকারী mtime

আমি যে সর্বোত্তম সমাধানটি খুঁজে পেতে পারি তা হ'ল:

cp -p -r source/data target/
rm -rf source/data

একটি এনএফএস শেয়ারে 1TB এর বেশি ডেটা সহ, অনুলিপিটি চিরকালের জন্য নেয়। আমি কপি করতে চাই না। আমি তাত্ক্ষণিক পদক্ষেপ চাই।

আমি যখন কোনও ফোল্ডার ব্যবহার করে সরিয়ে ফেলি mv source/data target/, mtimeফোল্ডারটির (ফাইল নয়) বর্তমান সময়ে সেট হয়ে যায়। এটি হ'ল কারণ আমি যে ফোল্ডারটি নিয়ে চলেছি সেগুলি এই ক্রিয়াকলাপের মাধ্যমে সংশোধিত হবে ( ..এন্ট্রিটি একটি ভিন্ন ইনোডের দিকে নির্দেশ করছে)।

আমি ফোন করেছি নিম্নলিখিত শেল স্ক্রিপ্ট নিয়ে এসেছি mv_preserve_mtime.sh:

#!/bin/bash
# Moves source folder to target folder. 
# You are responsible for making sure the target does not exist, otherwise this blows up
export timestamp=`stat -c %y $1`
mv "$1" "$2"
touch --date="${timestamp}" $2

ঠিক আছে, এটিও কাজ করে না। ফোল্ডারটি mtimeপুনরুদ্ধার করা হয়েছে, তবে আমি যে ফোল্ডারে চলেছি তার মধ্যে সমস্ত ফোল্ডারগুলি (কেবলমাত্র 1 টি স্তর গভীর) mtimeআমি বুঝতে পারছি না তার কারণে তাদের রিসেট পান।

কারও কি সঠিক, দক্ষ ও সঠিক সমাধান রয়েছে?


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

@ গিলস: আমি জানি না কেন এটি হচ্ছে। এটি সেই mvপদক্ষেপ যা সমস্যার সৃষ্টি করে। এনএফএস সার্ভারটি আসলে একটি নেট অ্যাপ্লিকেশন স্টোরেজ, আমি এর অভ্যন্তরগুলি সম্পর্কে কার্যত কিছুই জানি না।
রোমান জেনকা

1
ধন্যবাদ। আমি সন্দেহ করি এটি নেট অ্যাপের বিজোড়তা। অন্যথায় touchকাজ করা উচিত ছিল। উপায় দ্বারা একটি আরও বহনযোগ্য উপায় হবে touch -r "$1" reference.tmp; mv -- "$1" "$2"; touch -r reference.tmp -- "$2"; rm reference.tmp
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

@ গিলস: খুব আকর্ষণীয়, বুঝতে পারিনি যে statপোর্টেবল ছিল না।
রোমান জেনকা

উত্তর:


15

POSIX mvatime / র দ্বারা mtime সংরক্ষণের জন্য জিজ্ঞাসা করতে কোন বিকল্প উপলব্ধ করা হয় না, কিন্তু অপারেশন একই ভলিউম স্থানীয় হয়, তাহলে আপনি অনুরোধ করতে পারেন cpপরিবর্তে ব্যবহার নিয়মিত ফাইল ডাটা কপি কঠিন-লিঙ্ক ব্যবহার করতে -lবিকল্প:

cp -p -r -l source/date target/
rm -rf source/data

যেহেতু কেবল ডিরেক্টরি এবং ফাইলের রেফারেন্সগুলিই অনুলিপি করা হবে তাই এটি আরও দ্রুত হওয়া উচিত:

হার্ড-লিঙ্কগুলিতে আরও তথ্যের জন্য, আপনি সংশ্লিষ্ট উইকিপিডিয়া পৃষ্ঠার সাথে পরামর্শ করতে পারেন

কেন আপনার বর্তমান সমাধানের সাথে উপ-ডিরেক্টরিগুলি এমটাইম পুনরায় সেট করা হচ্ছে, এটি কেবল কারণ আপনি কেবল প্যারেন্ট ডিরেক্টরী এমটাইমকে পাবেন এবং পুনরুদ্ধার করবেন: স্পর্শটি পুনরাবৃত্ত আদেশ নয়।


এমটাইম তার চেয়ে জটিল। কেবলমাত্র মূল ডিরেক্টরি এবং এর নীচে সরাসরি ডিরেক্টরিগুলি এমটাইম পরিবর্তিত হয়েছে। অন্যান্য সমস্ত ডিরেক্টরি একই থাকে। প্রত্যেকটি একক ডিরেক্টরি পরিবর্তিত হবে বা কেবল পিতামাতাকেই প্রত্যাশা করবে।
রোমান জেনকা

1
প্রকৃতপক্ষে, এটি উপলব্ধি করে: 1) প্যারেন্ট ডিরেক্টরিটিতে ভাল মাইটাইম থাকে কারণ এটি স্পষ্টভাবে স্পর্শের মাধ্যমে সেট করা হয়েছিল, ২) ডিরেক্টরি প্রবেশিকাগুলিতে প্যারেন্ট ডিরেক্টরি সহ পুনরায় তৈরি করা হয়েছিল, তবে তাদের এমটাইম ম্যানুয়ালি পুনরুদ্ধার করা হয়নি (ইউনিক্স ডিরেক্টরি কাঠামো এবং ইনোড ফর্ম্যাট) 3) গাছের বাকী কাঠামোটি বাস্তবে পরিবর্তিত হয়নি, কারণ আমরা একই ভলিউমে রয়েছি: এজন্য mvকোনও "রিকার্সিভ" বিকল্প নেই, সাব-ডিরেক্টরিতে অবতরণ কেবল তখনই করা হয় যখন প্রকৃত অনুলিপি (উদাহরণস্বরূপ বিভিন্ন খণ্ড) প্রয়োজন হয়।
ইউরেকা

@ ইউরেকা: ভালো ব্যাখ্যা, তবে কেন এভাবে করা হচ্ছে? যদি আমি বাস্তবায়ন করতে ছিল mvএকটি ডিরেক্টরি data, আমি কেবল পরিবর্তন হবে ..মধ্যে dataএর বিষয়বস্তু এবং সংশোধন sourceএবং targetসরানো আইটেমটি সঠিকভাবে তালিকা ডিরেক্টরি। অন্য কোনও ডিরেক্টরি স্পর্শ করার প্রয়োজন হবে না।
রোমান জেনকা

1
@ রোমান জেনকা কিছু অনুসন্ধানের পরে, এই আচরণটি ইউনিস এবং ফাইল সিস্টেমগুলির মধ্যে স্বল্পভাবে নির্দিষ্ট renameকরা হয়েছে এবং কার্নেল এবং ব্যবহৃত ফাইল-সিস্টেম (গুলি) দ্বারা প্রচুর অন্তর্নিহিত সিস্কেল বাস্তবায়নের উপর নির্ভর করে , এনএফএস সমস্যার সাথে তার অংশ যুক্ত করে। এই ধরণের অসঙ্গতিগুলি উল্লেখ করে কিছু পয়েন্টার রয়েছে: patchwork.ozlabs.org/patch/25833 বাগস.ওপেনসোলারিস.org
ইউরেকা

@ ইউরেকা: আমার বিশ্বাস করা অত্যন্ত কঠিন যে আমি এতটা বেসিককে বিবেচনা করব যে এই জাতীয় গোলযোগ হতে পারে। এটি প্রায় ২০১১ those এই সংস্থানগুলির জন্য ধন্যবাদ!
রোমান জেনকা

4

আর একটি সমাধান হতে পারে:

rsync -a - সরানো-উত্স-ফাইল উত্স / ডেটা লক্ষ্য /


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