स्कॉट पैक के अद्भुत जवाब के लिए धन्यवाद (मुझे नहीं पता था कि यह पहले सेश के साथ कैसे करना है), मैं इस सुधार की पेशकश कर सकता हूं (यदि bashआपका शेल है)। यह समानांतर संपीड़न, एक प्रगति संकेतक जोड़ देगा और पूरे नेटवर्क लिंक पर अखंडता की जांच करेगा:
tar c file_list |
tee >(sha512sum >&2) |
pv -prab |
pigz -9 |
ssh [user@]remote_host '
gunzip |
tee >(sha512sum >&2) |
tar xC /directory/to/extract/to
'
pvआपके पाइप के लिए एक अच्छा प्रगति दर्शक कार्यक्रम है और pigzएक समानांतर gzip प्रोग्राम है जो डिफ़ॉल्ट रूप से आपके सीपीयू के रूप में कई थ्रेड्स का उपयोग करता है (मेरा मानना है कि अधिकतम 8 तक)। आप सीपीयू के अनुपात को नेटवर्क बैंडविथ के साथ बेहतर ढंग से फिट करने के लिए संपीड़न स्तर को ट्यून कर सकते हैं और इसे स्वैप कर सकते हैं pxz -9eऔर pxz -dयदि आपके पास बैंडविड्थ के लिए बहुत अधिक सीपीयू है। आपको केवल यह सत्यापित करना होगा कि दोनों रकम पूर्ण होने पर मेल खाते हैं।
यह विकल्प बहुत बड़ी मात्रा में डेटा के साथ-साथ उच्च विलंबता नेटवर्क के लिए उपयोगी है, लेकिन लिंक अस्थिर और ड्रॉप होने पर बहुत उपयोगी नहीं है। उन मामलों में, rsync संभवतः सबसे अच्छा विकल्प है क्योंकि यह फिर से शुरू हो सकता है।
नमूना उत्पादन:
6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e - ]
176MiB [9.36MiB/s] [9.36MiB/s] [ <=> ]
6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e -
ब्लॉक डिवाइस के लिए:
dd if=/dev/src_device bs=1024k |
tee >(sha512sum >&2) |
pv -prab |
pigz -9 |
ssh [user@]remote_host '
gunzip |
tee >(sha512sum >&2) |
dd of=/dev/src_device bs=1024k
'
जाहिर है, सुनिश्चित करें कि वे गिनती =, स्किप =, तलाश =, आदि के साथ समान आकार या सीमा हैं।
जब मैं इस तरह से फाइल सिस्टम को कॉपी करता हूं, तो मैं अक्सर dd if=/dev/zero of=/thefs/zero.dat bs=64k && sync && rm /thefs/zero.dat && umount /thefsसबसे पहले अप्रयुक्त स्थान को शून्य कर देता हूं , जो कि xfer को गति देता है।