ইতিমধ্যে আপ-টু-ডেট থাকা ফাইলটি অনুলিপি করার জন্য কেন আরএসসিএন চেষ্টা করে?


24

আমার দুটি একই ফাইল রয়েছে, লোকাল মেশিনে এবং রিমোট ফাইলটিতে। তাদের আকারগুলি সমান এবং স্থানীয় মেশিনে ফাইল দূরবর্তী একের চেয়ে নতুন is তবে আরএসসিএনসি এখনও ফাইলটি অনুলিপি করার চেষ্টা করে।

আমি নিম্নলিখিত হিসাবে rsync অনুরোধ:

rsync -nv -e "ssh -p 2222" user@host:/data/file.fif data/file.fif

(যদি আমি -nবিকল্প ব্যবহার না করি তবে এটি অনুলিপি অপারেশন শুরু করে)

Rsync ডকস স্পষ্টভাবে বলে যে এটি হওয়া উচিত নয়:

Rsync  finds files that need to be transferred using a "quick check" algorithm (by default) that looks for files that have changed in size or in last-modified time.

ফলাফলগুলি stat:

# remote file
  File: `data/fif/Skovorodko_Olga_45_raw.fif'
  Size: 1137551966  Blocks: 2221784    IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 286338      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1037/  platon)   Gid: ( 1047/  platon)
Access: 2013-08-08 18:40:16.907581658 +0400
Modify: 2013-07-16 12:01:09.158763284 +0400
Change: 2013-07-16 12:01:09.158763284 +0400

# local file
  File: `data/fif/Skovorodko_Olga_45_raw.fif'
  Size: 1137551966  Blocks: 2221792    IO Block: 4096   regular file
Device: 801h/2049d  Inode: 12987232    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1005/  platon)   Gid: ( 1003/  platon)
Access: 2013-08-08 19:02:57.146223369 +0400
Modify: 2013-08-08 19:02:57.146223369 +0400
Change: 2013-08-08 19:02:57.146223369 +0400

কেন এমন হয়?

হালনাগাদ:

এরকম rsync --size-onlyফলাফল অনুলিপি করা হচ্ছে ফাইল:

delta-transmission enabled
Skovorodko_Olga_45_raw.fif is uptodate
total: matches=0  hash_hits=0  false_alarms=0 data=0

sent 14 bytes  received 114 bytes  85.33 bytes/sec
total size is 1137551966  speedup is 8887124.73 (DRY RUN)

উত্তর:


37

দ্রুত চেক অ্যালগরিদম কোনও পরিবর্তিত সময় বা ভিন্ন আকারের যে কোনও ফাইলকে পরিবর্তিত হিসাবে বিবেচনা করবে। সুতরাং, যদি আপনার গন্তব্য ডিরেক্টরিতে একই ফাইলটির একটি নতুন সংস্করণ থাকে, তবে এটি আলাদা বিবেচিত হবে এবং এটি উত্স সংস্করণে সিঙ্ক হবে।

এটি প্রত্যাশিত (এবং নিরাপদ) আচরণ। উদাহরণস্বরূপ, ধরা যাক আপনার দুটি ডিরেক্টরি রয়েছে, ~ / src এবং ~ / গন্তব্য, প্রতিটি ফুবার ফাইল সহ। ~ / Src / foobar এ আপনি "foo" লিখেন, এবং তারপরে ~ / গন্তব্য / ফুবারে আপনি "বার" লিখবেন। এখন আপনি y / src- কে dest / গন্তব্যতে rsync। আপনি কি আশা করবেন?

উভয় ফাইলের আকার একই, তবে ~ / গন্তব্যগুলির মধ্যে একটি নতুন। Rsync স্ট্যান্ডার্ড আচরণ হ'ল ~ / src / foobar এর সাথে dest / গন্তব্য / foobar প্রতিস্থাপন করা। অবশ্যই, ফাইলগুলি অভিন্ন হতে পারে এবং এটি অযৌক্তিক হতে পারে, তবে এটি জানার কোনও উপায় নেই, যদি না আপনি চেকসাম করেন বা বিট প্রতি বিটের তুলনা করেন।

যদি আপনি সেই আচরণটি না চান, তবে এটি বলতে চাই যে আপনি রিসিভারে থাকা নতুন ফাইলগুলি সংরক্ষণ করা উচিত, আপনাকে -u (--update) পতাকাটি ব্যবহার করতে হবে।

-u, --update গন্তব্যস্থলে বিদ্যমান যে কোনও ফাইল এড়ানোর জন্য সোর্স ফাইলের চেয়ে নতুনতর পরিবর্তিত সময় থাকতে এই RSSyncকে বাধ্য করে। (যদি কোনও বিদ্যমান গন্তব্য ফাইলে উত্স ফাইলের সমান পরিবর্তনের সময় থাকে তবে আকারগুলি পৃথক হলে তা আপডেট হবে))


2
হ্যাঁ, আসলেই সমস্যা ছিল। আমি -tপতাকা যুক্ত করতে ভুলে গিয়েছি , সুতরাং এটি নতুন ফাইলে উপযুক্ত পরিবর্তনের সময় নির্ধারণ করছিল না, এবং পরবর্তীকালে আরএসসিএন-র অনুরোধগুলি আরও নতুন ফাইল আপডেট করার চেষ্টা করছিল। ধন্যবাদ!
রোগাচ

13
@ রোগাচ সর্বদা ব্যবহার করুন rsync -aযদি না আপনার কাছে ভাল কারণ না থাকে।
গিলস 'অশুভ হওয়া বন্ধ করুন'

আমি ওপি একই সমস্যা হচ্ছে কিন্তু -aএই ক্ষেত্রে একটি ভিন্ন সমস্যা হতে হবে, যথা একটি ত্রুটি skipping directory .কারণ ছিল -aধারণ করে -rএবং আমি যদি সেখানে ফোল্ডারের মধ্যে কোন ডিরেক্টরি ছিল এটা যে ত্রুটি দেয় মনে। এই ব্লগ পোস্টে
এলাচ

@ কার্ডডমোম এখনও -aডিফল্টরূপে ব্যবহার করা উচিত এবং তারপরে --no-উপসর্গ সহ আপনি চান না এমন বিকল্পগুলি স্পষ্টভাবে অক্ষম করুন । আপনার ক্ষেত্রে এটি হবে rsync -a --no-r
ওয়ালফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.