ল্যানে একটি বড় ফাইল অনুলিপি করার দ্রুত উপায়


24

এনএফএস নিয়ে আমার কিছুটা সমস্যা হচ্ছে, এবং আমি ঠিক পুরানো টিসিপি ব্যবহার করে চেষ্টা করতে চাই try

কোথা থেকে শুরু করব তা আমার কোনও ধারণা নেই।

হার্ডওয়্যার ভিত্তিক, আমি দুটি নেটবুক নেটওয়ার্ক করতে ইথারনেট ক্রসওভার কেবল ব্যবহার করছি।

তাদের নেটওয়ার্ক করতে, আমি টাইপ করি

$ sudo ifconfig eth0 192.168.1.1 up && ping -c 10 -s 10 192.168.1.2 && sudo /etc/init.d/nfs-kernel-server start

প্রথম নেটবুক এবং

$ sudo ifconfig eth0 192.168.1.2 up
$ ping -c 10 -s 10 192.168.1.1
$ mount /mnt/network1

দ্বিতীয়

যেখানে /mnt/network1/ etc / fstab হিসাবে নির্দিষ্ট করা আছে

192.168.1.1:/home /mnt/network1 nfs noauto,user,exec,soft,nfsvers=2 0 0

পাশাপাশি /etc/exportsপ্রথম নেটবুকে (সেই ফাইলটির সিনট্যাক্স ব্যবহার করে)।

উপরের কাজগুলি সূক্ষ্মভাবে কাজ করে তবে ফাইল এবং ডিরেক্টরিগুলি বিশাল। ফাইলগুলি প্রায় এক গিগাবাইট একটি টুকরো গড়, এবং ডিরেক্টরিগুলি 15 থেকে 50 গিগাবাইটের মধ্যে থাকে।

আমি rsyncতাদের স্থানান্তর করতে ব্যবহার করছি , এবং কমান্ডটি (চালু 192.168.1.2) রয়েছে

$ rsync -avxS /mnt/network1 ~/somedir

আমি নিশ্চিত না যে আমার এনএফএস সেটিংসকে বিশাল rsyncআকারের ফাইলগুলি হ্যান্ডেল করার উপায় আছে কিনা, তবে আমি দেখতে চাই যে সরল পুরাতন টিসিপিতে কোনও ডিমন চালানো rsyncএনএফএসের চেয়ে আরও ভাল কাজ করে কিনা ।

সুতরাং, পুনরাবৃত্তি করার জন্য, আমি কীভাবে টিসিপি দিয়ে একটি অনুরূপ নেটওয়ার্ক সেট আপ করব?

হালনাগাদ:

সুতরাং, আমার নিজের অজ্ঞতার মনোবল থেকে নিজেকে টেনে আনার চেষ্টা করার কয়েক ঘন্টা পরে (বা, যেমন আমি এটি ভাবতে পছন্দ করি, নিজের বুটস্ট্র্যাপগুলি দিয়ে নিজেকে টেনে তুলতে) আমি কিছু দরকারী তথ্য নিয়ে এসেছি।

তবে সর্বোপরি, আমাকে কীভাবে বর্তমান খরচের সেরা উত্তরটি গ্রহণ করার পরিবর্তে এই খরগোশের পথে চালিত করেছিল তা ncহ'ল : একটি অবিশ্বাস্য শীতল প্রোগ্রাম যা দৃ for়ভাবে আমার পক্ষে কাজ করতে ব্যর্থ হয়। আমি netcat-openbsdএবং netcat-traditionalপ্যাকেজগুলি চেষ্টা করেছি যা ভাগ্য নেই।

গ্রহণের মেশিনে আমি যে ত্রুটিটি পাই 192.168.1.2তা হ'ল:

me@netbook:~$ nc -q 1 -l -p 32934 | tar xv
Can't grab 0.0.0.0:32934 with bind
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors

route দেয়:

me@netbook:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         dir-615         0.0.0.0         UG    0      0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 eth0
192.168.0.0     *               255.255.255.0   U     2      0        0 wlan0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

তবে, এখানে সুখবরটি রয়েছে: স্থির আইপি ঠিকানাগুলি সেট করা আছে /etc/network/interfaces, যা আমি কাজ করার চেষ্টা করার সময় করতে শুরু করেছিলাম nc, আমার সমস্ত এনএফএস সমস্যা সমাধান করে এবং এনএফএসের প্রতি আমার ভালবাসাকে পুনরুত্থিত করে।

আমি সঠিক কনফিগারেশনটি ব্যবহার করেছি ( 192.168.1.1অবশ্যই প্রথম নেটবুকের জন্য) ছিল:

auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0

এই সেটিংসের সাহায্যে, দুটি নেটবুক এমনকি বুট আপ না করে সরাসরি একে অপরকে পিং করতে সক্ষম হবে ifup

যাইহোক, আমি এখনও সত্যিই ncকর্মে দেখতে চাই , তাই আমি আশা করি কেউ এই প্রক্রিয়াটি ডিবাগ করতে আমাকে সহায়তা করবে help


উভয় ডিরেক্টরি যদি স্থানীয় হয় তবে আপনি কেবলমাত্র পুরানো /bin/cp
প্ল্যান

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

এনএফএসভি 2 বেশ পুরানো। আপনি কোন ওএস ব্যবহার করছেন?
নিলস

যথাক্রমে সর্বশেষতম ডেবিয়ান এবং সর্বশেষ উবুন্টু। আমি (তত্সহ সেই কমান্ড সব পেয়েছিলাম nfsvers=2) এই টিউটোরিয়াল থেকে ( michaelminn.com/linux/home_network )
ixtmixilix

5
আসলে, এসএসএস বেশ পরিমাণে ওভারহেড যুক্ত করে, ক্রিপ্টো সস্তা নয়। সাধারণ ইন্টারনেটের গতিতে, এটি কোনও ব্যাপার নয়, তবে একটি ল্যানের (বা সরাসরি ক্রস-কানেক্ট, এই ক্ষেত্রে) আপনি খেয়াল করতে পারেন। গিগাবিট ছাড়াই, খুব দ্রুততম মেশিনগুলি বাদে (বা এসইএস-এনআই নির্দেশাবলীযুক্ত, যদি এসএসএইচগুলি ব্যবহার করে) আমি নিশ্চিত যে এটি লক্ষণীয় হবে।
ডারোবার্ট

উত্তর:


43

দ্রুত উপায়

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

user@dest:/target$ nc -q 1 -l -p 1234 | tar xv

user@source:/source$ tar cv . | nc -q 1 dest-ip 1234

nc1234 পোর্টে একটি কাঁচা টিসিপি সংযোগের উপর ট্যারা প্রেরণ করতে নেটক্যাট ( ) ব্যবহার করে There কোনও এনক্রিপশন, সত্যতা যাচাইকরণ ইত্যাদি নেই, তাই এটি খুব দ্রুত। যদি আপনার ক্রস-কানেক্টটি গিগাবিট বা তারও কম চলমান থাকে তবে আপনি নেটওয়ার্কটি প্যাগ করুন; যদি এটির বেশি হয় তবে আপনি ডিস্কটি পেগ করবেন (যদি না আপনার কাছে স্টোরেজ অ্যারে বা দ্রুত ডিস্ক থাকে)। vআলকাতরা পতাকা এটা ফাইলের নাম প্রিন্ট যেমন যায় (মোড বাগাড়ম্বরপূর্ণ) আছে। বড় ফাইল সহ, এটি কার্যত কোনও ওভারহেড নেই। আপনি যদি প্রচুর ছোট ফাইল করছেন, তবে আপনি এটি বন্ধ করে দিন। এছাড়াও, আপনি pvঅগ্রগতি সূচক পেতে পাইপলাইনের মতো কিছু সন্নিবেশ করতে পারেন :

user@dest:/target$ nc -q 1 -l -p 1234 | pv -pterb -s 100G | tar xv

আপনি অবশ্যই অন্যান্য জিনিসগুলিও সন্নিবেশ করতে পারেন, যেমন gzip -1(এবং zপ্রাপ্ত প্রান্তে zপতাকা যুক্ত করুন the প্রেরণ প্রান্তে পতাকাটি 1 এর চেয়ে উচ্চতর সংক্ষেপণ স্তর ব্যবহার করবে, যদি না আপনি GZIP পরিবেশ পরিবর্তনশীল সেট করেন)। যদিও আপনার ডেটা সত্যই সংকুচিত না করে gzip সম্ভবত আসলে ধীর হবে ।

আপনার যদি সত্যিই আরএসএনসি দরকার হয়

যদি আপনি সত্যিই কেবল পরিবর্তিত তথ্যের একটি ছোট্ট অংশ স্থানান্তর করেন তবে আরএসএনসি দ্রুত হতে পারে। আপনি দ্রুত -W/ --whole-fileদ্রুততর হতে পারে এমন সত্যিকারের একটি নেটওয়ার্ক (ক্রস-কানেক্টের মতো) এর মতো / বিকল্পটিও দেখতে চাইতে পারেন।

আরএসসিএন চালানোর সহজতম উপায় হ'ল ssh। কোনটি দ্রুততম তা দেখতে আপনি এসএসআই সাইফারগুলির সাথে পরীক্ষা করতে চাইবেন, এটি এএস, চ্যাচ20 বা ব্লোফিশ হবে (যদিও ব্লোফিশের 64৪-বিট ব্লকের আকারের সাথে সুরক্ষার কিছু উদ্বেগ রয়েছে) তার উপর নির্ভর করে আপনার চিপটিতে ইন্টেলের এএস রয়েছে কিনা তা নির্ভর করে -এনআই নির্দেশাবলী (এবং আপনার ওপেনএসএসএল সেগুলি ব্যবহার করে)। একটি নতুন পর্যাপ্ত ssh এ, rsync-over-ssh এর মত দেখাচ্ছে:

user@source:~$ rsync -e 'ssh -c aes128-gcm@openssh.com' -avP /source/ user@dest-ip:/target

পুরোনো SSH / sshd কমান্ড জন্য চেষ্টা aes128-ctrবা aes128-cbcস্থানে aes128-gcm@openssh.com

চ্যাচ2020 chacha20-poly1305@openssh.com(নতুন নতুন এসএসএস / এসএসডি প্রয়োজন) এবং ব্লোফিশটি ব্লোফিশ-সিবিসি হবে। ওপেনএসএইচ সাইবার ছাড়াই চলতে দেয় না। আপনি অবশ্যই যেকোন পছন্দ করতে পারেন তবে আপনার পছন্দ মতো আরএসসিএন অপশন ব্যবহার করতে পারেন -avP। এবং অবশ্যই আপনি অন্য দিকে যেতে পারেন, এবং সোর্স মেশিনের পরিবর্তে গন্তব্য মেশিন (পুল) থেকে আরএসসিএন চালাতে পারেন push

আরএসসিএনকে দ্রুত তৈরি করা হচ্ছে

আপনি যদি একটি আরএসসিএনইমন ডেমন চালায় তবে আপনি ক্রিপ্টো ওভারহেড থেকে মুক্তি পেতে পারেন। প্রথমত, আপনি /etc/rsyncd.confউত্স মেশিনে উদাহরণস্বরূপ একটি ডেমন কনফিগারেশন ফাইল ( ) তৈরি করতে চান ( বিশদর জন্য rsyncd.conf ম্যান্যাপটি পড়ুন):

[big-archive]
    path = /source
    read only = yes
    uid = someuser
    gid = somegroup

তারপরে, গন্তব্য মেশিনে, আপনি চালাবেন:

user@dest:~$ rsync -avP source-ip::big-archive/ /target

আপনি প্রায় অন্য উপায়ে এটিও করতে পারেন (তবে অবশ্যই আপনাকে কেবল পড়তে হবে না)) প্রমাণীকরণ ইত্যাদির জন্য বিকল্প রয়েছে, বিশদটির জন্য ম্যানপেজটি দেখুন।


2
এটি একটি দুর্দান্ত উত্তর। অন্যটিও দুর্দান্ত। প্রশ্নকর্তা তাদের মধ্যে চয়ন করতে পারবেন না বলেই কি কোনও গ্রহণযোগ্য উত্তর নেই?
sudo

netcatপদ্ধতিটি কতটা দৃ ?়? নেটওয়ার্ক যদি প্যাকেট ফেলে দেয় তবে মনে হয় এটি ফাইলের এলোমেলো অংশ হারাবে।
সুডো

1
@ সুডো এটি টিসিপি ব্যবহার করছে যা প্রয়োজন অনুসারে পুনঃপ্রেরণ করবে। সুতরাং এটি প্যাকেটের ক্ষতি, এলোমেলো দুর্নীতির বিরুদ্ধে (টিসিপি এবং ইথারনেট চেকসামগুলি যে পরিমাণে ধরেছে) ইত্যাদি বিরুদ্ধে জরিমানা করা উচিত, ইত্যাদি, এটি এসএসএসের উপরে টানেলিংয়ের মতো আক্রমণ থেকে সুরক্ষিত নয়।
ডারোবার্ট

1
@ সুডো আপনি একবারে এটি করতে পারেন, teeচেকসামগুলি গণনা করতে উভয় পক্ষের পাইপটিতে কয়েকটি কমান্ড সন্নিবেশ করুন।
ডারোবার্ট

1
@TheStoryCoder tarঅংশের বিন্দু এটি বর্তমান ডিরেক্টরি করতে বলছে। এটি আসলে ncকমান্ডের অংশ নয় , টার একটি সংরক্ষণাগার তৈরি করতে ব্যবহার করা হচ্ছে, যা নেটকেটে পাইপ করা হচ্ছে (এবং অন্যদিকে, সংরক্ষণাগারটি বের করার জন্য নেটক্যাটটি পাইপের জন্য পাইপ দেওয়া হচ্ছে)। আমি ভীত একটি মন্তব্য পাইপ ব্যাখ্যা করার জন্য যথেষ্ট না যথেষ্ট, তবে আশা করি আপনি এটি শুরু করার জন্য যথেষ্ট ...
ডারোবার্ট

17

কিভাবে? বা টিএল; ডিআর

দ্রুততম পদ্ধতি আমি পেয়েছি তার সংমিশ্রণ tar, mbufferএবং ssh

উদাহরণ:

tar zcf - bigfile.m4p | mbuffer -s 1K -m 512 | ssh otherhost "tar zxf -"

এটি ব্যবহার করে আমি 1 জিবি লিঙ্কগুলিতে 950 এমবি / সেকেন্ডেরও বেশি স্থায়ী স্থানীয় নেটওয়ার্ক ট্রান্সফার অর্জন করেছি। আপনি যেটি স্থানান্তর করছেন তার উপযুক্ত হওয়ার জন্য প্রতিটি টার কমান্ডের পাথগুলি প্রতিস্থাপন করুন।

কেন? mbuffer!

একটি নেটওয়ার্কের মাধ্যমে বড় ফাইলগুলি স্থানান্তর করার বৃহত্তম বাধা হ'ল দূর থেকে, ডিস্ক আই / ও। তার উত্তর হ'ল mbufferবা buffer। এগুলি বেশিরভাগ ক্ষেত্রে একই রকম তবে mbufferএর কিছু সুবিধা রয়েছে। ডিফল্ট বাফার আকারটি 2MB এর জন্য mbufferএবং 1MB এর জন্য buffer। বড় বাফারগুলি কখনও খালি না হওয়ার সম্ভাবনা বেশি। লক্ষ্য এবং গন্তব্য ফাইল সিস্টেমে উভয় নেটিভ ব্লক আকারের সর্বনিম্ন সাধারণ একাধিক যা একটি ব্লক আকার চয়ন করা সেরা কার্যকারিতা দেবে।

বাফারিং হ'ল জিনিসটি যা সমস্ত পার্থক্য তৈরি করে! এটি থাকলে তা ব্যবহার করুন! যদি আপনার কাছে না থাকে, এটি পান! (m}?bufferপ্লাস কিছু ব্যবহার করা যেকোনো কিছু থেকে নিজের থেকে ভাল। ধীরে ধীরে নেটওয়ার্ক ফাইল স্থানান্তরের জন্য এটি প্রায় আক্ষরিক অর্থেই একটি প্যানাসিয়া।

আপনি যদি একাধিক ফাইলগুলিকে tarএকসাথে ডেটা স্ট্রিমের সাথে "গলিত" করতে ব্যবহার করেন। যদি এটি একক ফাইল হয় তবে আপনি catবা I / O পুনঃনির্দেশ ব্যবহার করতে পারেন । tarবনাম এর ওভারহেড catপরিসংখ্যানগতভাবে তুচ্ছ তাই এটি ইতিমধ্যে একটি টারবাল না থাকলে আমি সর্বদা ব্যবহার করি tar(বা zfs -sendযেখানে আমি পারি) ব্যবহার করি । এর কোনওটিই আপনাকে মেটাটাটা দেওয়ার গ্যারান্টিযুক্ত নয় (এবং বিশেষত তা করবে না)। আপনি যদি মেটাটাটা চান, আমি এটি আপনার জন্য অনুশীলন হিসাবে ছেড়ে দেব।cat

অবশেষে, sshপরিবহন ব্যবস্থার জন্য ব্যবহার করা উভয়ই সুরক্ষিত এবং খুব সামান্য ওভারহেড বহন করে। আবার, ওভারহেড sshবনাম ncপরিসংখ্যানগত নগণ্য।


4
openssl speedএকটি i7-3770 এ ব্লোফিশ সিবিসির জন্য – 126–146 এমবি / সেকেন্ড এবং এইএস সিবিসির জন্য 1387157 এমবি / সেকেন্ড দেয় (এই চিপে এইএস-এনআই নির্দেশাবলী রয়েছে)। তারপরে sha256 এর জন্য 200–300 এমবি / সেকেন্ড। সুতরাং এটি সবেমাত্র 1 গিগাবিট ঠেলাতে পারে। ওপেনএসএইচ 6.1+ এর সাহায্যে আপনি এইএস জিসিএম ব্যবহার করতে পারেন যা এটি অন্ধ করার হারে করতে পারে (মেসেজের আকারের উপর নির্ভর করে 370–1320 এমবি / সেকেন্ড)। সুতরাং আমি এটি একমাত্র সত্য বলে মনে করি যে আপনি যদি এসইএস-এনআই এর সাথে একটি চিপে 6.1+ চালিয়ে চলেছেন এবং এটিএস-জিসিএম ব্যবহার করছেন তবে ওপেনএসএইচটির সামান্য ওভারহেড রয়েছে।
ডারোবার্ট

1
ওহ, আমি দ্রুত পুনরায় চেক করে শেষ মুহুর্তে 6.2+ এর পরিবর্তে এটিকে 6.1+ এ পরিবর্তন করেছি। অবশ্যই, এটি একটি ভুল ছিল, এটি 6.1 এর পরে পরিবর্তন হয়েছে । সুতরাং ওপেনএসএইচ 6.2+ সঠিক সংস্করণ। এবং এটি আমাকে এখন আর কোনও মন্তব্য সম্পাদনা করতে দেয় না। 5 মিনিটের বেশি পুরানো মন্তব্যগুলি অবশ্যই ভুল থাকতে হবে। অবশ্যই, ওপেনএসএসএইচ .4.৪ এর চেয়ে কম হলে ওপেনএসএইচএস / টেক্সট / জিসিএমআরকি.এডিভি প্যাচ ব্যতীত দেখুন ওপেনএসএসএইচ -এর এইএস-জিসিএম বাস্তবায়নে একটি শোষণীয় ত্রুটি রয়েছে।
ডারোবার্ট

এর জন্য ওভারহেড ssh(বা এসএসসি ওভার এসএসইসি) খুব গুরুত্বপূর্ণ , খুব গুরুত্বপূর্ণ। আমার একটি এনএএস আছে যা একটি ইন্টেল অ্যাটম সিপিইউ ব্যবহার করে। এসএসএইচ এনক্রিপশন পুরোপুরি স্থানান্তর গতিতে ধন্যবাদ জানায়। আমি আরএসএর জন্য ধারাবাহিকভাবে <400 এমবিট / সেকেন্ড পাই, আরসি 4 এ ম্যানুয়ালি ওভাররাইড করলে আমাকে ~ 600 এমবিট / সেকেন্ড পাওয়া যায় এবং আমি যদি ডিএসমন হিসাবে আরএসসিএনসি ব্যবহার করি তবে এটি লিগ নেটিভ গতিতে (> 900 এমবিাইট / সেকেন্ড) গিগাবাইটে চলে সংযোগ)।
ভুয়া নাম

যদিও এটি সত্য যে বেশিরভাগ ক্ষেত্রে, পরিবহনটি গুরুত্বপূর্ণ নয়, এটি বিবেচনা করা একেবারে গুরুত্বপূর্ণ, বিশেষত যদি আপনি অত্যন্ত উচ্চমানের হার্ডওয়্যারটিতে চালাচ্ছেন না। আমার ক্ষেত্রে, এটিম (এটি একটি ডি 525, ডুয়াল কোর 1.8 গিগাহার্টজ) এসএমবি এর জন্য প্রচুর গতি সহ একটি সম্পূর্ণ সূক্ষ্ম এনএএস তৈরি করে, তবে এনক্রিপশন একেবারে একে একে হত্যা করে।
ভুয়া নাম

2
এমবাফারের প্যারামিট্রাইজেশনের কারণে আমি মারাত্মক ত্রুটি পেয়েছি: 'এমফার: মারাত্মক: মোট মেমরি অবশ্যই ব্লকের আকারের চেয়ে বড় হওয়া উচিত \ n সমাপ্ত'। সংশোধন করার জন্য, আমার সন্দেহ হয় এটি এমবিাইটের জন্য চূড়ান্ত 'এম' সহ 'এমফার-এস 1 কে-এম 512 এম' এর মতো কিছু পড়তে হবে (উত্স: মানুষ এমবাফার)
পিটার লাস্টিগ

1

এমনকি আপনাকে টিসিপি ব্যবহার করার দরকার নেই। এওইটি ইথারনেটের উপর একটি এটিএ বাস্তবায়ন, স্তর 2 হওয়ায় এটি টিসিপি / আইপি স্ট্যাকের কোনও জ্ঞান ছাড়াই নিম্ন-ওভারহেড পদ্ধতি। এটি আপনাকে সর্বনিম্ন ওভারহেড সহ দ্রুততম স্থানান্তর সরবরাহ করবে * ***

https://en.wikipedia.org/wiki/ATA_over_Ethernet

*** নেটওয়ার্কটি যদি বাধা হয় তবে নিশ্চিত হন যে আপনি সংকুচিত ডেটা প্রেরণ করছেন।


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