ফাইল স্থানান্তর গতিতে বিপরীত মাল্টিপ্লেক্সিং x


19

আমি একটি মেশিন থেকে অন্য মেশিনে প্রচুর পরিমাণে ডেটা প্রেরণ করেছি। যদি আমি আরএসসিএনসি (বা অন্য কোনও পদ্ধতি) দিয়ে প্রেরণ করি তবে এটি স্থির 320 কেবি / সেকেন্ডে যাবে। যদি আমি একবারে দুটি বা তিনটি স্থানান্তর শুরু করি তবে প্রত্যেকে 320 এ চলে যাবে এবং আমি একবারে চারটি করে ফেললে তারা লিংকটি সর্বাধিক বের করে দেবে।

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

এমন কোনও সরঞ্জাম রয়েছে যা এটি করে, বা আমার নিজের তৈরি করা দরকার? প্রেরক হলেন সেন্টোস, রিসিভার হ'ল ফ্রিবিএসডি।

উত্তর:


29

প্রমাণটি সমস্ত যোগ করে - আমি দূরবর্তী মিরর কমান্ডগুলির 'পবিত্র গ্রেইল' উপস্থাপন করি। পরামর্শের জন্য ডেভর ধন্যবাদ lftp

lftp -c "mirror --use-pget-n=10 --verbose sftp://username:password@server.com/directory" 

উপরেরটি পুনরুক্তভাবে একটি রিমোট ডিরেক্টরিটি আয়না করবে, স্থানান্তরিত হওয়ার সাথে সাথে প্রতিটি ফাইলকে 10 টি থ্রেডে ভেঙে দেবে!


lftpদুর্দান্ত, তবে ইউপিলোড করার সময় আমি এটি মাল্টিপার্ট করার পক্ষে পাচ্ছি না। আমি ব্যবহার করছি mirror --use-pget-n=20 -R- তবে মনে হয় --use-pget-nকেবল ডাউনলোড করার সময় কাজ করে।
ড্যান

পিএস, -P20একাধিক ফাইল আপলোড করার জন্য কাজ করে, তবে আমি প্রতিটি ফাইলকে ভাগ করতে পারি না।
ড্যান

1
lftp বিভাগগুলি / মাল্টিপার্ট আপলোডিং সমর্থন করে না। আপনার ব্যবহারের জন্য গন্তব্য দিক থেকে স্থানান্তর শুরু করতে হবে pget -n
এপ্রিয়েটার

মনে রাখবেন, mirrorদ্বি-দিকনির্দেশক; pgetযুক্তি শুধুমাত্র ফাইল ডাউনলোড হচ্ছে প্রযোজ্য।
এপ্রিয়েটার

10

একটি দম্পতি সরঞ্জাম রয়েছে যা কার্যকর হতে পারে।

  • এলএফটিপি - এফটিপি, এইচটিটিপি এবং এসএফটিপি সমর্থন করে। একক ফাইল ডাউনলোড করতে একাধিক সংযোগ ব্যবহার করে সমর্থন করে। ধরে নিই যে আপনি রিমোট সার্ভার থেকে লোকাল সার্ভারে একটি ফাইল স্থানান্তর করতে চান, লোকাল সার্ভারে এলএফটিপি ইনস্টল করুন এবং রান করুন:

    lftp -e 'pget -n 4 sftp://userName@remoteServer.com/some/dir/file.ext'

    '-N 4' সমান্তরালে কত সংযোগ ব্যবহার করতে হয় তা।

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


8

আপনার যদি কয়েকটি এবং বৃহত ফাইল ব্যবহার হয় lftp -e 'mirror --parallel=2 --use-pget-n=10 <remote_dir> <local_dir>' <ftp_server>: আপনি প্রতিটি 20 টি এফটিপি সংযোগের সাথে 10 সেগমেন্টে প্রতিটি ফাইল বিভক্ত করে 2 টি ফাইল ডাউনলোড করবেন <ftp_server>;

আপনার যদি ছোট পরিমাণে ছোট ফাইল থাকে তবে ব্যবহার করুন lftp -e 'mirror --parallel=100 <remote_dir> <local_dir>' <ftp_server>: আপনি বিভাগগুলি ছাড়াই সমান্তরালে 100 টি ফাইল ডাউনলোড করবেন। মোট 100 টি সংযোগ খোলা থাকবে। এটি সার্ভারে উপলভ্য ক্লায়েন্টগুলিকে ছাড়িয়ে দিতে পারে বা কিছু সার্ভারে আপনাকে নিষিদ্ধ করতে পারে।

আপনি --continueকাজটি আবার শুরু করতে ব্যবহার করতে পারেন :) এবং -Rডাউনলোডের পরিবর্তে আপলোড করার বিকল্পটি (তারপরে যুক্তির আদেশটি স্যুইচ করা <local_dir> <remote_dir>)।


1
প্যারামিটারে টাইপ করুন: --use-pget-n এর পরিবর্তে - ব্যবহার-পজেট-এম। সম্পাদনা করার চেষ্টা করেছি, তবে আমার সম্পাদনাটি সংক্ষেপে ছিল।
টনি

2

সংযোগ সীমা প্রতি 320KB / s কী কারণে ঘটছে তার উপর নির্ভর করে আপনি এই সমস্যাটি এড়াতে আপনার টিসিপি সেটিংসগুলিকে টুইঙ্ক করতে সক্ষম হতে পারেন। আমার অনুমান যে এটা হয় না ISP দ্বারা সীমিত স্পষ্ট প্রতি সংযোগ হার। থ্রটলিংয়ের জন্য সম্ভবত দু'জন অপরাধী রয়েছে:

  1. দুটি মেশিনের মধ্যে কিছু লিঙ্ক স্যাচুরেটেড এবং প্যাকেট ছাড়ছে।
  2. টিসিপি উইন্ডোগুলি স্যাচুরেটেড কারণ ব্যান্ডউইথের বিলম্ব পণ্যটি খুব বড়।

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

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

সংযোগের মোট গতি দিয়ে রাউন্ড ট্রিপ "পিং" সময়কে গুণ করে উইন্ডোটি কত বড় হতে হবে তা আপনি আনুমানিক বলতে পারেন। 1280 কেবি / সেকেন্ডের 1280 (1024 = 1K এর জন্য 1311) প্রতি মিলি সেকেন্ডের জন্য বাইটের প্রয়োজন। একটি ms৪ কে বাফারটি প্রায় 50 এমএস ল্যাটেন্সি থেকে সর্বাধিক আউট করা হবে যা মোটামুটি সাধারণ। একটি 16 কে বাফার তখন প্রায় 320KB / s এর জন্য পরিপূর্ণ হয়।


1

আপনার তথ্য কীভাবে কাঠামোগত হয়? কয়েকটি বড় ফাইল? কয়েকটি বড় ডিরেক্টরি? আপনি আপনার ডিরেক্টরি গাছের নির্দিষ্ট শাখায় rsync এর একাধিক উদাহরণ ছড়িয়ে দিতে পারেন।

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


নির্বিচারে ডেটা। কখনও কখনও এটি একটি বৃহত ডিরেক্টরি, কখনও কখনও একক ফাইল।
জিমিডুবজংজিজংডাব্বি

1

আপনি যদি পাসওয়ার্ডহীন ssh লগইন সেটআপ করতে পারেন, তবে এটি প্রতিটি সংযোগ 4 টি ফাইল (-L) পরিচালনা করে 4 সমবর্তী স্ক্রিপ সংযোগগুলি (-n) খুলবে:

খুঁজে। -প্রকার চ | xargs -L 4 -n 4 /tmp/scp.sh ব্যবহারকারী @ হোস্ট: পথ

ফাইল /tmp/scp.sh:

#!/bin/bash

#Display the help page
function showHelp()
{
    echo "Usage: $0 <destination> <file1 [file2 ... ]>"
}

#No arguments?
if [ -z "$1" ] || [ -z "$2" ]; then
    showHelp
    exit 1
fi

#Display help?
if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
    showHelp
    exit 0
fi

#Programs and options
SCP='scp'
SCP_OPTS='-B'
DESTINATION="$1";shift;

#Check other parameters
if [ -z "$DESTINATION" ]; then
    showHelp
    exit 1
fi

echo "$@"

#Run scp in the background with the remaining parameters.
$SCP $SCP_OPTS $@ $DESTINATION &

0

ইনোডে সমস্ত ফাইল বাছাই করে দেখুন (সন্ধান করুন / মাইডির-টাইপ এফ-প্রিন্ট | xargs ls -i | सॉर्ट-এন) এবং সেগুলি উদাহরণস্বরূপ এসপিএস-এর মাধ্যমে সিপিও দিয়ে স্থানান্তর করুন। এটি আপনার ডিস্কটি সর্বাধিক বাড়িয়ে তুলবে এবং আপনার নেটওয়ার্ককে বাধা দেবে। নেটওয়ার্কের ওপারে যাওয়ার সময় এর চেয়ে আরও শক্ত কাজ।


এটি নিখুঁতভাবে লুক্কায়িত :)
ওয়ারেন

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

বাধা হ'ল প্রতিটি টিসিপি সংযোগ 320KB / সেকেন্ডের মধ্যে সীমাবদ্ধ। আমি সমান্তরাল টিসিপি সংযোগগুলিতে ফাইলগুলি প্রেরণ করতে চাই যাতে আমি নেটওয়ার্কের সীমা (প্রায় 1200 কেবি / সেকেন্ড) পর্যন্ত 320 * নুম সংযোগ পাই। ইনোড দ্বারা বাছাই করা এটি অর্জন করে না।
জিমিডুবজংজিজংডাব্বি

টিসিপি গতির সীমাবদ্ধতা কী? মেশিনগুলির মধ্যে একটি রাউটার?
জিমি হেডম্যান 21

আমার আইএসপি নেট নিরপেক্ষতা? হা!
জিমিডুবজংজিজংডাব্বি

0

আমি এমন একটি সরঞ্জাম জানি যা বিশদগুলিতে ফাইলগুলি স্থানান্তর করতে পারে। সরঞ্জামটিকে 'রটারেন্ট' প্যাকেজ / পোর্ট বলা হয় যা উভয় হোস্টে উপলভ্য;) বিটটরেন্ট ক্লায়েন্টগুলি প্রায়শই স্থানান্তর করার আগে ডিস্কের স্থান সংরক্ষণ করে এবং খণ্ডগুলি সরাসরি সকেট থেকে ডিস্কে লিখিত হয়। অতিরিক্তভাবে, আপনি একটি সুন্দর ncurses স্ক্রিনে সমস্ত স্থানান্তরগুলির স্থিতি পর্যালোচনা করতে সক্ষম হবেন।

"* .Torrent" ফাইল তৈরি করতে স্বয়ংক্রিয় করতে আপনি সরল বাশ স্ক্রিপ্ট তৈরি করতে পারেন এবং রিমোট মেশিনে একটি কমান্ড ssh করতে পারেন যাতে এটি ডাউনলোড হয়। এটি কিছুটা কুৎসিত দেখাচ্ছে তবে আমি মনে করি না আপনি বিকাশ ছাড়া কোনও সহজ সমাধান খুঁজে পাবেন :)


1
যদি কেবল দুটি মেশিনই ফাইল স্থানান্তরের সাথে জড়িত থাকে, তবে কীভাবে টরেন্ট সাহায্য করতে পারে? টরেন্টের ধারণাটি ক্লায়েন্টের অনুরোধকারীর কাছে ডেটা উপলব্ধ করার জন্য বীজবৃক্ষদের একটি ঝাঁক।
ডেভপ্যারিলো

তুমি ঠিক বলছো. তবে কে বলেছে যে এটি একটি একা বীজদাতার সাথে দরকারী নয়? ;)
কলিপ্টো

2
যদি কোনও টরেন্ট ক্লায়েন্ট একক পিয়ারের সাথে একাধিক টিসিপি সংযোগ তৈরি করে, তবে এটি ওপির সমস্যার সমাধান করবে। তবে, আমি জানি না টরেন্ট ক্লায়েন্টরা সত্যই একক সমবয়সীদের সাথে একাধিক টিসিপি সংযোগ তৈরি করে।
ক্রোনাস

0

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

এফটিপিএস (এসএসএল থেকে এফটিপি) আপনার যা প্রয়োজন তা করতে পারে।

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


এসএফটিপি কি আরও সহজ এবং ঠিক (আরও বেশি নয়) সুরক্ষিত হবে না?
মার্ক রেনুফ

1
@ আরব: আপনি কোথায় পেয়েছেন যে "এফটিপি ফাইল স্থানান্তরের জন্য একাধিক সংযোগ ব্যবহার করে" কোথা থেকে? কিছু ক্লায়েন্ট এফটিপি থেকে ডাউনলোড করার জন্য একাধিক স্ট্রিমগুলিকে অনুমতি দেয় তবে এফটিপিতে আপলোড করার জন্য কোনও এফটিপি ক্লায়েন্ট / সার্ভার কম্বো অবশ্যই পাবেন না ।
ক্রোনাস

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

1
@ ক্রোনোস: দুঃখিত, এটি পরিষ্কার ছিল না; আমি পরামর্শ দিচ্ছিলাম যে জিমিডুবজংজিজংডুবি সেন্টোস সার্ভার থেকে ফ্রিবিএসডি ক্লায়েন্টে ডাউনলোড করতে এফটিপি ব্যবহার করুন। আমি "ফাইল স্থানান্তর" এর পরিবর্তে বিশেষত "ডাউনলোড" বলার উত্তর আপডেট করেছি।
লুট করুন

-1

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

সমাধান 2: আরও ভাল সমাধান হ'ল কোনও স্ক্রিপ্ট বা প্রোগ্রাম লিখুন যা আকারের উপর ভিত্তি করে বৃহত ডিরেক্টরি গাছকে সাবট্রিতে ভাগ করে, তারপরে সেই সাবট্রিকে সমান্তরালে অনুলিপি করে। আপনি যদি প্রথমে সম্পূর্ণ ডিরেক্টরি কাঠামো (ফাইলগুলি ছাড়াই) অনুলিপি করেন তবে এটি জিনিসগুলিকে সহজ করতে পারে।


ডাউনওয়েতে বিস্তৃত করার জন্য কেউ যত্ন করে?
ছিনতাই করুন

-1

আপনি কি বিশ্বস্ত পরিবেশে দুটি মেশিন চালাচ্ছেন? আপনি নেটকাট চেষ্টা করতে পারেন । সার্ভারের দিকে:

tar -czf - ./yourdir | nc -l 9999

এবং ক্লায়েন্ট উপর:

nc your.server.net 9999 > yourdir.tar.gz

আপনি ক্লায়েন্ট সংযোগ একটি ssh টানেল ব্যবহার করতে পারেন:

ssh -f -L 23333:127.0.0.1:9999 foo@your.server.net sleep 10; \
    nc 127.0.0.1 23333 > yourdir.tar.gz

এমনকি একটি সম্পূর্ণ পার্টিশনও এইভাবে সরানো যেতে পারে:

dd if=/dev/sda1 | gzip -9 | nc -l 9999

এবং ক্লায়েন্ট উপর:

nc your.server.net 9999 > mysda1.img.gz

বিঃদ্রঃ

নেটক্যাটটি সর্বাধিক সুরক্ষিত স্থানান্তর সরঞ্জাম নয়, তবে সঠিক পরিবেশে দ্রুত হতে পারে কারণ এর কম ওভারহেড রয়েছে।

হাওটোফর্জের একটি ভাল উদাহরণ পৃষ্ঠা রয়েছে


এটি সাধারণ প্রশ্নের মতো মনে হচ্ছে যা তার প্রশ্নের উত্তর দেয় না question আমি দেখতে পাচ্ছি না যে আপনার সমাধানগুলির মধ্যে কীভাবে সমান্তরালে স্থানান্তরিত হবে, এনসি যতদূর জানি আমি কেবল একটি সংযোগ
davr

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