প্রশ্ন দুই সার্ভারের মধ্যে দ্রুত একটি বড় সংখ্যক ফাইল কপি করবেন কিভাবে


আমি দুইটি (উবুন্টু) পরিসেবার মধ্যে বিপুল সংখ্যক mp3s স্থানান্তর করতে হবে। বিশাল দ্বারা আমি গড় 300K উপর একটি মিলিয়ন ফাইল মানে। আমি চেষ্টা করেছিলাম scp কিন্তু এটি প্রায় এক সপ্তাহ লাগবে। (প্রায় 500 কেবি / গুলি) আমি HTTP দ্বারা একটি একক ফাইল স্থানান্তর, আমি 9-10 এমবি / গুলি পেতে, কিন্তু আমি জানি না কিভাবে তাদের সব স্থানান্তর করা।

দ্রুত তাদের সব স্থানান্তর করার একটি উপায় আছে কি?


81
2018-06-02 19:55


উত্স


সার্ভারের মধ্যে আপনার কি ধরণের নেটওয়ার্ক থাকে। আমি প্রতিটি মেশিনে 1 এনআইসি এর মধ্যে একটি জিবি ইথারনেট ক্রসওভার ব্যবহার করেছি। আমি এসসিপি ব্যবহার করে যে কনফিগারেশন রাখা মাধ্যমে খুব ভাল পেয়েছিলাম - Jim Blizard
আপনি scp এত ধীর কেন তদন্ত করতে পারেন। এটি ধীর হতে পারে তবে এনক্রিপশনের কারণে ftp এর মত জিনিস কিন্তু এটি খুব ধীর হওয়া উচিত নয়। - Zoredache
আমি তাদের মধ্যে 100 এমবিপিএস আছে। scp ছোট ফাইলগুলির উপর ধীরগতির (এদের মধ্যে বেশিরভাগই ছোট) - nicudotro


উত্তর:


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

tar -c /path/to/dir | ssh remote_server 'tar -xvf - -C /absolute/path/to/remotedir'

ম্যাকিনটোশ এর নীচের মন্তব্যটি হ'ল আপনি rsync এর জন্য যে কমান্ড ব্যবহার করবেন

rsync -avW -e ssh /path/to/dir/ remote_server:/path/to/remotedir

109
2018-06-02 20:04



+1 টিপ ফাইলটি বড় সংখ্যক ছোট ফাইলগুলির জন্য অনেক বেশি কার্যকরী কারণ উভয় স্কিপি এবং rsync নেটওয়ার্ক জুড়ে ফাইলের প্রতি আরও বেশি বৃত্তাকার ট্রিপ থাকবে। - Sekenre
rsync tar তুলনায় আমার জন্য ভাল কাজ - nicudotro
এছাড়াও, যদি আপনার প্রচুর CPU উপলব্ধ থাকে (উভয় প্রান্তে) তবে হোস্টের মধ্যে কমপক্ষে একটি ধীর লিংক, এটি টার কমান্ডে কম্প্রেশন (gzip বা bzip) সক্ষম করার যোগ্য হতে পারে। - Vatine
@ জ্যামি: আপনি যদি ssh-agent ব্যবহার করেন তবে এটি ব্যবহার করা উচিত। অন্যথায় ব্যক্তিগত কী খুঁজতে হবে তা নির্দিষ্ট করতে '-i' বিকল্পটি ব্যবহার করুন। বিস্তারিত জানার জন্য ম্যান পৃষ্ঠা দেখুন। - Scott Pack
@ আনিক্সার ~ এসএসএইচ একটি টার্মিনাল ব্যবহার করে যদি কেবল পাল্টা চরিত্রটি সক্রিয় থাকে। যখন আপনি একটি দূরবর্তী কমান্ড নির্দিষ্ট করেন তখন এটি হয় না (যদি না আপনি পাস করেন -t বিকল্প)। সুতরাং আপনার উদ্বেগ অবৈধ। - Gilles


বাহ্যিক হার্ড ড্রাইভ এবং একই দিন কুরিয়ার প্রসবের।


32
2018-06-02 20:00



হেই হেই ... কোন নেটওয়ার্কিং প্রযুক্তি 90 এমপিএইচ করে টেপ দিয়ে লোড করা স্টেশন ওয়াগনের ব্যান্ডউইথটি, না? (snicker) আমি মনে করি তিনি একটি ল্যান ছিল কারণ তিনি বলেন যে তিনি HTTP সঙ্গে 9-10MB / সেকেন্ড পেয়েছিলাম। - Evan Anderson
আমি ইন্টারনেটে গতির এই ধরণের পাই, কিন্তু আমি যেখানেই বাস করি সেখানে ভাগ্যবান! যদি এটি একটি ল্যান, তারপর সস্তা! - Adam
Ahh - আপনার অবস্থান তাকান না। হ্যাঁ - আমি শুনেছি যে কোরিয়ার ইন্টারনেট সংযোগটি বেশ দর্শনীয়। এখানে মার্কিন যুক্তরাষ্ট্রে আটকে থাকা, আমি নেট থেকে 900 কেবি / সেকেন্ড পেতে পেরে খুশি ... - Evan Anderson
হ্যাঁ, তবে আপনি যখন ডাউনলোডের জন্য অপেক্ষা করছেন তখন আপনি সুস্বাদু burritos পেতে পারেন এবং এমনকি সিওল এমনকি প্রায় অর্ধেক শালীন মেক্সিকান রেস্টুরেন্ট আছে ... - Adam


আমি rsync ব্যবহার করতে চাই।

যদি আপনি তাদের ডিরেক্টরি তালিকা সহ HTTP এর মাধ্যমে রপ্তানি করে থাকেন তবে আপনি wget এবং --mirror যুক্তিটিও ব্যবহার করতে পারেন।

আপনি ইতিমধ্যেই দেখছেন যে HTTP এসসিপি এর চেয়ে দ্রুততর কারণ এসসিপি সবকিছু এনক্রিপ্ট করছে (এবং এভাবে সিপিএর উপর ঘোরাফেরা করছে)। HTTP এবং rsync দ্রুত সরাতে যাচ্ছেন কারণ তারা এনক্রিপ্ট করছেন না।

উবুন্টুতে rsync সেট আপ করতে এখানে কিছু ডক্স রয়েছে: https://help.ubuntu.com/community/rsync

যারা ডক্স এসএসএইচ উপর টানেলিং rsync সম্পর্কে কথা বলতে, কিন্তু যদি আপনি একটি ব্যক্তিগত ল্যান প্রায় তথ্য সরানো হয় আপনি SSH প্রয়োজন হয় না। (আমি মনে করি আপনি একটি ব্যক্তিগত LAN এ আছেন। আপনি যদি ইন্টারনেটে 9-10 এমবি / সেকেন্ড পেয়ে থাকেন তবে আমি জানতে চাই যে আপনার কোন ধরনের সংযোগ আছে!)

এখানে কিছু অন্যান্য মৌলিক ডক্স রয়েছে যা আপনাকে একটি আপেক্ষিক অনিরাপদ rsync সার্ভার সেটআপ করার অনুমতি দেবে (w / SSH তে কোন নির্ভরতা নেই): http://transamrit.net/docs/rsync/


16
2018-06-02 19:57



যদিও এসসিপি প্রকৃতপক্ষে ডেটা এনক্রিপ্ট করার জন্য কিছু CPU ব্যবহার করে, আমার মনে হয় না তার 100% CPU ব্যবহার রয়েছে, তাই সিপিও একটি সমস্যা নয়। আমি দ্রুত স্থানান্তর আসে যখন এসসিপি অকার্যকর যে অনেক বার লক্ষ্য করেছি। - Cristian Ciupitu
তিনি এসসিপি এবং HTTP এর জন্য 9 এমবি জন্য 300 কে দেখছিলেন, আমি মনে করি যে একটি এসসিপি-সম্পর্কিত সমস্যা (সাধারণত CPU) খেলার মধ্যে আসছে। এটা অবশ্যই অন্য কিছু হতে পারে, যদিও। W / o মেশিনগুলির হার্ডওয়্যার চশমাগুলি জেনে রাখা প্রশ্নে কঠিন। - Evan Anderson
rsync স্পষ্টভাবে পরিবহনের জন্য ssh ব্যবহার করা হবে, কারণ এটি ডিফল্ট আচরণ, তাই scp এ এনক্রিপশন দ্বারা সৃষ্ট যেকোনো ওভারহেড rsync এ উপস্থিত থাকবে - Daniel Lawson
"আপনি ইতিমধ্যেই দেখছেন যে HTTP এসসিপি এর চেয়ে দ্রুততর কারণ SCP সবকিছু এনক্রিপ্ট করছে" → ভুল। 10 বছরের পুরোনো সার্ভার না থাকা পর্যন্ত, সে এই কাজটিতে CPU- র আবদ্ধ নয়। - niXar
@ রামজান পোলাট - আপনার একটি কমান্ড লাইন রয়েছে যা খুব বেশি দীর্ঘ। ফাইল নির্বাচন পৃথকভাবে উল্লেখ করুন এবং এটি আপনার জন্য জরিমানা কাজ করবে। সাধারণত আপনি শুধুমাত্র শেষে একটি ওয়াইল্ডকার্ড উৎস ডিরেক্টরি নির্দিষ্ট করতে পারেন। আপনি ব্যবহার করতে পারেন --include এবং --exclude আরো nuanced পেতে আর্গুমেন্ট। - Evan Anderson


অনেক আলোচনা ছাড়াই, নেটক্যাট, নেটওয়ার্ক সুইজার্মি ছুরি ব্যবহার করুন। কোন প্রোটোকল ওভারহেড, আপনি সরাসরি নেটওয়ার্ক সকেটে অনুলিপি করছেন। উদাহরণ

srv1$ tar cfv - *mp3 | nc -w1 remote.server.net 4321

srv2$ nc -l -p 4321 |tar xfv -

14
2018-06-02 20:17



দুর্ভাগ্যবশত, আমি netcat লক্ষ্য করেছি কি থেকে এটি খুব না হওয়া পর্যন্ত খুব অক্ষম। - Cristian Ciupitu
আমি আপনাকে downvoting করছি কারণ এই সত্যিই, সত্যিই ভয়ানক পরামর্শ। একটি সঠিক উত্তর আছে: rsync। আমি ভাল কেন সব কারণ তালিকা দিতে পারে কিন্তু এটি এই পৃষ্ঠায় মাপসই করা হবে না, এই ছোট মন্তব্য বক্স একা। - niXar
@niXar: যদি আপনি যা করতে চান তা হল একটি ফাইল স্থানান্তর (আরও সিঙ্ক করার প্রয়োজন নেই), তাহলে টারপাইপ আসলেই আপনার যা দরকার তা। - Witiko
@niXar নেটক্যাটটি যদি আপনি সুরক্ষিত পরিবেশে এটি Private Vlan এবং / অথবা VPN এর মতো করে থাকেন তবে ভাল। - Lester Cheung


আপনি rsync সঙ্গে যেতে হলে প্রচুর ফাইল সঙ্গে, আমি উভয় প্রান্তে সংস্করণ 3 বা উপরে পেতে চেষ্টা করবে। স্থানান্তর শুরু হওয়ার আগে একটি ছোট সংস্করণ প্রতিটি ফাইলকে সংজ্ঞায়িত করবে। নতুন বৈশিষ্ট্য বলা হয় ক্রমবর্ধমান-পুনরাবৃত্তির

একটি নতুন ক্রমবর্ধমান-পুনর্মিলন অ্যালগরিদম   rsync কথা বলা হয় যখন এখন ব্যবহার করা হয়         অন্য 3.x সংস্করণে। এই স্থানান্তর আরো দ্রুত যাচ্ছে শুরু হয়         (সব ফাইল পাওয়া যায় আগে), এবং অনেক কম মেমরি প্রয়োজন।         কিছু সীমাবদ্ধতা জন্য manpage মধ্যে --recursive বিকল্প দেখুন।


8
2018-06-02 20:41





অন্যদের মত rsync ইতিমধ্যে সুপারিশ করা হয়েছে। যদি এনক্রিপশন থেকে সিপিইউ ওভারহেডটি কোনও সমস্যা না হয়, তবে কম সিএফআই নিবিড় অ্যালগরিদমটি ব্যবহার করুন, যেমন blowfish। উদাহরণস্বরূপ কিছুটা এইরকম

rsync -ax -e 'ssh -c blowfish' /local/path user@host:/remote/path


7
2018-06-02 20:56



সাইফার পরিবর্তন সম্পর্কে বিন্দু জন্য +1 - Daniel Lawson
আপনার কাছে 10 জি ইথারনেট এবং 10 বছরের পুরানো CPU না থাকলে CPU টি বন্ধকী হবে না। - niXar
শুধু মন্তব্য করুন: সাইফার "-c arcfour" দ্রুত। - Arman
@niXar: কিন্তু আপনার যদি ইতিমধ্যে আপনার মেশিনে CPU ব্যবহার করার কাজ থাকে তবে এটি একটি উদ্বেগ। - Isaac


বড় সংখ্যক ফাইল অনুলিপি করার সময়, আমি দেখেছি যে tar এবং rsync মত সরঞ্জামগুলি অনেকগুলি ফাইল খোলার এবং বন্ধ করার ওভারহেডের কারণে বেশি অক্ষম হওয়া দরকার। আমি দ্রুত-সংরক্ষনকারী নামে একটি ওপেন সোর্স টুল লিখেছি যা এই দৃশ্যগুলির জন্য tar এর চেয়ে দ্রুত: https://github.com/replicon/fast-archiver; এটি একাধিক সমবায় ফাইল অপারেশন সম্পাদন করে দ্রুত কাজ করে।

এখানে দুই মিলিয়নেরও বেশি ফাইলের ব্যাকআপে দ্রুত-সংরক্ষণাগার বনাম tar এর একটি উদাহরণ রয়েছে; দ্রুত-সংরক্ষণাগারটি আর্কাইভে ২7 মিনিট সময় নেয়, বনাম টর 1 ঘন্টা 23 মিনিট সময় নেয়।

$ time fast-archiver -c -o /dev/null /db/data
skipping symbolic link /db/data/pg_xlog
1008.92user 663.00system 27:38.27elapsed 100%CPU (0avgtext+0avgdata 24352maxresident)k
0inputs+0outputs (0major+1732minor)pagefaults 0swaps

$ time tar -cf - /db/data | cat > /dev/null
tar: Removing leading `/' from member names
tar: /db/data/base/16408/12445.2: file changed as we read it
tar: /db/data/base/16408/12464: file changed as we read it
32.68user 375.19system 1:23:23elapsed 8%CPU (0avgtext+0avgdata 81744maxresident)k
0inputs+0outputs (0major+5163minor)pagefaults 0swaps

সার্ভারগুলির মধ্যে ফাইলগুলি স্থানান্তর করতে, আপনি ssh এর সাথে দ্রুত-সংরক্ষণাগার ব্যবহার করতে পারেন, এটির মতো:

ssh postgres@10.32.32.32 "cd /db; fast-archive -c data --exclude=data/\*.pid" | fast-archiver -x

4
2017-08-26 20:51





গতকাল 80 টিবি তথ্য (মিলিয়ন ক্ষুদ্র ফাইল) সরানো থেকে, স্যুইচিং rsync থেকে tar  অনেক দ্রুত হতে প্রমাণিত, আমরা চেষ্টা বন্ধ হিসাবে

# slow
rsync -av --progress /mnt/backups/section01/ /mnt/destination01/section01

এবং সুইচ tar পরিবর্তে...

# fast
cd /mnt/backups/
tar -cf - section01 | tar -xf - -C /mnt/destination01/ 

যেহেতু এই সার্ভারগুলি একই ল্যানে রয়েছে, তাই গন্তব্য হল NFS- উৎস সিস্টেমের উপর মাউন্ট করা, যা ধাক্কা দিচ্ছে। না এটা আরও দ্রুত করে তোলে, আমরা সংরক্ষণ না করার সিদ্ধান্ত নিয়েছে atime ফাইল এর:

mount -o remount,noatime /mnt/backups
mount -o remount,noatime /mnt/destination01

নীচের গ্রাফিকটি পার্থক্যটি rsync থেকে tar করতে তৈরি করা হয়েছে। এটা আমার ছিল বসের ধারণা এবং আমার সহকর্মী উভয় এটি মৃত্যুদন্ড কার্যকর এবং মহান তৈরি তার ব্লগে লিখুন। আমি পছন্দ করি সুন্দর ছবিগুলো। :)

rsync_vs_tar


3
2018-04-04 10:32



একটি হ্যাকার আমি বিশ্বাস করি যে "NFS এর পরিবর্তে টিসি এর উপর চাপ দিন এমনকি দ্রুত হতে পারে"। অর্থাত tar cf - directory | ttcp -t dest_machine থেকে ftp.arl.mil/mike/ttcp.html - Philip Durbin
সম্পর্কিত প্রশ্ন, কিন্তু যে গ্রাফ কোথা থেকে? - CyberJacob


আমি মাধ্যমে টর ব্যবহার করুন netcat পাশাপাশি পদ্ধতির, আমি ব্যবহার করতে পছন্দ ছাড়া socat - আপনার পরিস্থিতি জন্য অপ্টিমাইজ করার অনেক বেশি ক্ষমতা - উদাহরণস্বরূপ, mss tweaking দ্বারা। (এছাড়াও, যদি আপনি চান হাসি, কিন্তু আমি খুঁজে socat আর্গুমেন্ট মনে রাখা সহজ কারণ তারা সামঞ্জস্যপূর্ণ)। তাই আমার জন্য, এটি খুব সাধারণ হিসাবে আমি নতুন সার্ভারে জিনিসগুলি সরানো হয়েছে:

host1$ tar cvf - filespec | socat stdin tcp4:host2:portnum

host2$ socat tcp4-listen:portnum stdout | tar xvpf -

Aliases ঐচ্ছিক।


3
2018-06-03 06:38





আরেকটি বিকল্প মিশ। এই ক্ষেত্রে Rsync এর চেয়ে সামান্য বেশি দক্ষ হতে পারে, এবং এটি শ্রোতা সেট আপ করতে কিছুটা সহজ।


2
2018-06-02 20:00





মনে হচ্ছে উপরের উত্তরগুলিতে কয়েকটি টাইপস থাকতে পারে। এটি আরও ভাল কাজ করতে পারে:

tar -cf - /path/to/dir | ssh remote_server 'tar -xvf - -C /path/to/remotedir'

2
2018-06-02 22:10



আমি -ফ বিকল্পটি ব্যবহার করার সময় কমান্ডটি ব্যর্থ হয়েছে। - user11749
@ ব্যবহারকারী 11749: এই কমান্ডটিতে দুটি -ফ বিকল্প রয়েছে, যা উভয়ই প্রয়োজন। আপনি কি পিএস-এর পাসে কথা বলছেন? - retracile