बहुत डिस्क स्थान का उपयोग किए बिना व्यस्त बॉक्स पर एक टार संग्रह के अंदर फ़ाइलों के sha1 चेकसम कैसे बनाएं


3

मैं एक सूची के रूप में एक साधारण टार संग्रह के अंदर सभी फाइलों के sha1 चेकसम प्राप्त करना चाहूंगा।

यह एक व्यस्त बॉक्स मशीन पर किया जाना चाहिए जहां केवल न्यूनतम टार बाइनरी उपलब्ध है, देखें http://linux.die.net/man/1/busybox उपलब्ध कमांड के लिए।

डिस्क स्थान का उपयोग किए बिना बड़ी टार फ़ाइल को अनपैक करने के लिए। मक्खी पर Sha1 की पाइपिंग और गणना के साथ कुछ, आउटपुट को / dev / null में निर्देशित करता है

यह नेटवर्क पर फ़ाइल को कॉपी किए बिना या इसे निकालने के लिए बैकअप को सत्यापित करने के लिए संभव बनाता है जो कि संसाधन खपत दोनों है।

यह मूल रूप से एक ही सवाल है कि बहुत डिस्क स्थान का उपयोग किए बिना एक टार संग्रह के अंदर फ़ाइलों के sha1 चेकसम कैसे बनाएं, जिसका एक शानदार उत्तर है, लेकिन मुझे केवल बाद में एहसास हुआ कि बिजीबॉक्स टार बाइनरी एक न्यूनतम संस्करण है जिसमें --to-command=sha1sumविकल्प नहीं है ।

जवाबों:


1

यहाँ इस समाधान के साथ कुछ प्रमुख समस्याएं हैं:

tar tf test.tar|while read file;do echo $file $(tar xOf test.tar $file|sha1sum);done

1-बिजीबॉक्स के टार नए नामों के साथ अलग-अलग फ़ाइलनाम नहीं दिखा सकते हैं।

2-गोले से "पढ़ा" बैकस्लैश को ठीक से संभाल नहीं पाता है। ("\" वर्णों को खाया जाता है या "\ n" को एक नई पंक्ति वर्ण द्वारा बदल दिया जाता है)

3-शेल वेरिएबल बिना दोहरे कोट्स के बार-बार स्पेस कैरेक्टर खाते हैं।

मैं 1 समस्या को ठीक नहीं कर सकता।

किसी भी तरह, मैं 2 और 3 को ठीक कर सकता हूं।

इस शेल स्क्रिप्ट को बनाएं: "tarsha1.sh" (मत भूलना "chmod 755 tarsha1.sh")

#!/bin/sh
tarname="$1"
shift
for filename in "$@"
do tar xOf "$tarname" "$filename" | sha1sum | head -c -3
   printf '%s\n' "$filename"
done

फिर इस कमांड का उपयोग करें:

tar tf test.tar | tr '\n' '\0' | xargs -0 -r ./tarsha1.sh test.tar

इसके साथ ही आप किसी भी वर्ण लेकिन नई लाइनों ("\ n") के साथ फ़ाइल नाम को संभालने में सक्षम होना चाहिए।

नोट: xargs के लिए "-0" विकल्प व्यस्त बॉक्स संकलन विकल्पों में सक्रिय होना चाहिए।


2
tar tf test.tar|while read file;do echo $file $(tar xOf test.tar $file|sha1sum);done 

$ फ़ाइल के बजाय "$ फ़ाइल" का उपयोग करने पर विचार करें।
Vouze

कृपया ध्यान दें कि बैकस्लैश अक्षर "रीड" द्वारा हटा दिए जाते हैं।
Vouze
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.