rsync VPN-ის გავლით: ხელახალი ცდა, რომელიც წყვეტილ გადაცემას ხელახლა იყენებს
ჩამონგრეული გვირაბი კავშირს ამთავრებს და არა მონაცემებს. შეინახეთ ფრაგმენტი --partial-dir-ით, ხელახლა გაუშვით იგივე ასლი და გამოამოწმეთ ფაილი გამოქვეყნებამდე.
თქვენი ატვირთვა ჩერდება თორმეტი გიგაბაიტიანი არქივის ოთხ გიგაბაიტზე, და ჩამოტვირთვის მენეჯერებისგან ნასწავლი ჩვევა ამბობს, რომ დააჭიროთ გაგრძელებას. rsync არ გააგრძელებს TCP ნაკადს, რადგან ეს ნაკადი გაქრა გვირაბის ბოლო ხელახალი გადაცემისას. რაც შეუძლია, არის უკვე მიღებული ბაიტების შენახვა და მათი შემდეგი ცდის საფუძვლად გამოყენება, რაც სხვა წესების სხვა მექანიზმია. თქვენ მიერ არჩეული დროშები განსაზღვრავს, მოხდება თუ არა ეს ხელახალი გამოყენება საერთოდ.
ხელახალი ცდა მდგომარეობას თავიდან აშენებს, ნაკადს არ აგრძელებს
როცა SSH სესია წყდება, დაშორებულ მხარეს მხოლოდ ის რჩება, რაც დისკზე ჩაიწერა, და მეტი არაფერი. არ არის სესიის ჟეტონი ხელახლა მისაბმელად და არ არის მიმდევრობის ნომერი გასამეორებლად. შემდეგი გაშვება ახალ კავშირს ხსნის, წყაროს ისევ კითხულობს და მიმღებს ეკითხება, რა აქვს უკვე.
ეს ბოლო კითხვა ხსნის, რატომ ღირს ნაწილობრივი ფაილის შენახვა. მიმღების ასლი rsync-ს შედარების საშუალებას აძლევს და ალგორითმი მხოლოდ იმ განსხვავებებს აგზავნის, რომელთა ამოცნობაც შეუძლია. ეს კვლავ მეტამონაცემების ახალი გადაცემა და წყაროზე ახალი გავლაა, ამიტომ დაზოგილი დრო პროპორციულია იმისა, თუ რამდენი ემთხვევა ფაილს, და არა იმისა, თუ რამდენად წავიდა წინ წინა კავშირი. თუ მიმღებმა არაფერი შეინახა, შემდეგი ცდა სრული ასლია, რამდენი გიგაბაიტიც არ უნდა გადაიტანოს პირველმა.
გადაწყვიტეთ, სად ცხოვრობს ხელახლა გამოსაყენებელი ნაწყვეტი
ნაგულისხმევი ქცევა ნაწილობრივ ფაილს დანიშნულების ბილიკზე წერს, რაც ნახევრად დაწერილ არქივს საბოლოო სახელის ქვეშ ხილვადს ხდის. --partial-dir მას თქვენ მიერ არჩეულ საქაღალდეში გადაიტანს, და სახელმძღვანელო ამ საქაღალდეს აღწერს როგორც შენახულს, რომ მოგვიანებითმა გადაცემამ მონაცემებად გამოიყენოს. ფარდობითი სახელი დანიშნულების საქაღალდის ქვეშ იხსნება, რაც ზუსტად ის არის, რაც გსურთ, როცა ორ მხარეს შეიძლება განსხვავებული განლაგება ჰქონდეს.
rsync -e ssh --partial-dir=.rsync-partial --info=progress2 -- \
large-archive.bin [email protected]:/srv/incoming/
დანიშნულების მხარესაც მნიშვნელოვანია რიგი: ნაწილობრივ საქაღალდეს საკმარისი ადგილი სჭირდება ნაწყვეტისთვის, ხოლო მოცულობას საკმარისი ადგილი დასრულებული ფაილისთვისაც. სამიზნე მოცულობის გადაცემის შუაში გავსება წარმოქმნის ხარვეზს, რომელიც ქსელის პრობლემას ჰგავს, მაგრამ არ არის, და შეიძლება შენახული ნაწყვეტი შეჭრილი დატოვოს. შეამოწმეთ თავისუფალი ადგილი მიმღებ ჰოსტზე გაშვების დაწყებამდე და არა მარცხის შემდეგ. რამდენიმე წამი df -h-ით იმავე SSH ბილიკზე გეგმის ყველაზე იაფი შესაძლო გამოცდაა.
ნებართვები უფრო მცირე, მაგრამ რეალური საზრუნავია. ნაწილობრივი საქაღალდე, რომელშიც უკავშირო ანგარიშებს შეუძლიათ წერა, სხვას აძლევს საშუალებას შეცვალოს შიგთავსი, რომელსაც თქვენი შემდეგი გაშვება უკვე მიღებულად ჩათვლის. შეინახეთ ის გადაცემის ანგარიშის საკუთრებაში და ნუ ჩასვამთ იქ, საიდანაც სხვა სერვისები აქვეყნებენ.
გაუშვით იგივე ასლი და არა უფრო ჭკვიანი
ხელახალი გამოყენება მოქმედებს მხოლოდ მაშინ, როცა წყარო და დანიშნულება კვლავ ერთსა და იმავე ობიექტს აღწერენ. იგივე ბილიკი, იგივე სახელი, იგივე ფაილი. წყაროს გადარქმევა ან სხვა დანიშნულების საქაღალდეზე მითითება ახალ შედარებას იწყებს რაიმე სასარგებლოს წინააღმდეგ, რაც არ არსებობს.
ნუ დაამატებთ --whole-file-ს, როცა დელტა ქცევას ელოდებით. ეს პარამეტრი rsync-ს ეუბნება, დააკოპიროს მთელი ფაილი მოძრავი საკონტროლო ჯამის შედარების გარეშე, რაც გონივრული არჩევანია სწრაფ ადგილობრივ კავშირზე და ზუსტად არასწორი წარუმატებელი შორეული ატვირთვის შემდეგ. --inplace ასევე ცვლის ისტორიას: პირდაპირ დანიშნულების ფაილში წერს, ამიტომ შეწყვეტა ტოვებს ფაილს, რომელიც ძველ და ახალ შიგთავსს ურევს, ცალკე ნაწყვეტის გარეშე, რომელსაც დაეყრდნობოდით.
პროგრესის ხაზი გადაცემის საერთო პროგრესს აცნობს. ეს დასრულების სიგნალი არ არის. რიცხვი, რომელიც ას პროცენტს აღწევს, სანამ კავშირი ჯერ კიდევ ღიაა, ნიშნავს, რომ მონაცემები გაგზავნილია და არა ის, რომ მიმღებმა რამე გადაარქვა, დაასინქრონა ან მიიღო.
მიიღეთ ობიექტი მხოლოდ მას შემდეგ, რაც დაემთხვევა
ჯერ გამოსვლის სტატუსი დაადასტურეთ, შემდეგ შეადარეთ შედეგი იმის ნაცვლად, რომ შეცდომების არარსებობას დაეყრდნოთ. ზომის შემოწმება შეჭრილი გადაცემების უმეტესობას იჭერს; საკონტროლო ჯამების შედარება დანარჩენს, და ორივე იაფია ატვირთვის ხელახლა გაშვებასთან შედარებით.
თუ არქივს ქვედა დინების პროცესი აქვეყნებს, აიძულეთ ეს პროცესი დაელოდოს მიღებულ ფაილს. შენახული ნაწყვეტი, რომელიც საბოლოო სახელით დაკვირვებულ საქაღალდეში მოხვდება, შემდეგ სკანირებას ხვდება, და მომხმარებლის შეცდომა დაზიანებულ შეყვანაზე იქნება და არა გადაცემაზე, რომელიც არასდროს დასრულდა.
ხელი არ ახლოთ წყაროს, სანამ მიმღები დაადასტურებს. ცდებს შორის არქივის ხელახლა გენერირება შედარების საფუძველს ცვლის, და შემდეგი გაშვება ან თითქმის ყველაფერს გადასცემს, ან ქმნის ფაილს, რომელიც არც ძველ და არც ახალ წყაროს არ ემთხვევა.
როცა ზღვარი კავშირია და არა დროშა
სათაურისა და პროტოკოლის დანამატი გადაცემის ერთ-ერთი ხარჯია და იშვიათად სწორედ ის განსაზღვრავს, რამდენ ხანს იკავებს დიდი ფაილი. გადაშვების ქცევა უფრო მნიშვნელოვანია: მეთოდი, რომელიც ხელის ნაბიჯების გარეშე გადაურჩება წყვეტას, უფრო ადრე აწვდის გამოსაყენებელ ფაილს, ვიდრე უფრო სწრაფი მეთოდი, რომელსაც თავიდან დაწყება სჭირდება. შენახვა ორივე მხარეს და ავთენტიფიკაციის ბილიკი იმავე შედარებაში შედის.
შეადარეთ დაშვებული ალტერნატიული ბილიკები იმავე ფაილითა და იმავე დანიშნულებით, და ჩაიწერეთ, საიდან იწყება თითოეული ხელახლა შეწყვეტის შემდეგ. ის ერთი სვეტი VPN-ის გავლით თორმეტი გიგაბაიტიანი ატვირთვის შესახებ უფრო მეტს გეუბნებათ, ვიდრე მოკლე ტესტში გაზომილი ნებისმიერი პიკური სიჩქარე.