एक साथ कई फ़ाइलों को एन्क्रिप्ट करें


10

मैं एक स्क्रिप्ट लिख रहा हूं, जो प्रोजेक्ट अभिलेखागार बनाता है और फिर उनमें से 7z अभिलेखागार बनाता है ताकि विशिष्ट संस्करणों को सहेजने और एन्क्रिप्टेड बैकअप रखने के लिए मुझ पर इसे आसान बनाया जा सके।

मैं अभिलेखागार उत्पन्न करने के बाद और मैं एन्क्रिप्शन चरण में पहुंचता हूं, gpgयदि संभव हो तो मैं एक कॉल के साथ फ़ाइलों को एन्क्रिप्ट करना चाहूंगा , ताकि केवल उपयोगकर्ता इनपुट उनके पासफ़्रेज़ को एक बार प्राप्त कर सकें। अन्यथा, हमें या तो उपयोगकर्ता के पासफ़्रेज़ को मेमोरी में कैश करना होगा (जो मैं वास्तव में नहीं करना चाहूंगा) या उनके पास इनपुट है और उनके पासफ़्रेज़ की पुष्टि हर एक प्रोजेक्ट के लिए है जो संग्रहीत है (जो कि बदतर है)।

वहाँ कई filenames पारित करने के लिए एक रास्ता है gpgकि यह उन सभी को एक बार में एन्क्रिप्ट किया है?

अगर मैं यह कोशिश करूँ:

$ gpg --cipher-algo AES256 --compression-algo BZIP2 -c project1.7z project2.7z

... मुझे शेल में निम्न त्रुटि दिखाई दे रही है:

usage: gpg [options] --symmetric [filename]

क्या ऐसा करने का कोई तरीका है जिसे मैं पूरा करना चाहता हूं?


2
आप पहले 7zip (संभवतः) का उपयोग क्यों कर रहे हैं संपीड़ित करने के लिए, फिर GnuPG को फिर से bzip2 का उपयोग करके संपीड़ित करने के लिए कह रहे हैं ? मैं आपको अंतरिक्ष दक्षता के मामले में बहुत अधिक लाभ नहीं पहुँचाता, और मुझे लगता है कि सीपीयू की अच्छी कीमत चुकानी होगी।
एक CVn

1
> क्या इसे एन्क्रिप्ट करने के लिए gpg के लिए कई फ़ाइलनामों को पास करने का एक तरीका है> उन सभी को एक बार में? हां, इस उत्तर को
Anchan

जवाबों:


5
Is there a way to pass multiple filenames to gpg to have it encrypt all of
them in one go?

नहीं वहाँ नहीं है।

आप संभवतः निम्न gpg विकल्पों में से एक के साथ पासफ़्रेज़ को पास करना चाहेंगे (बाद वाला सबसे सुरक्षित विकल्प होगा):

--passphrase
--passphrase-file
--passphrase-fd

10

चूंकि GnuPG इसका सीधे समर्थन नहीं करता है, इसलिए ऐसा करने का तरीका एक और परत जोड़ना होगा, जैसे कि उपयोग करना tar

tar c project1.7z project2.7z | gpg --cipher-algo AES256 --compression-algo BZIP2 -co projects.gpg

और निकालने के लिए:

gpg -d projects.gpg | tar x

आप के साथ छोड़ दिया हो जाएगा project1.7zऔर project2.7z। आपकी स्क्रिप्ट तब आप उठा सकते हैं जहां आपने छोड़ा था।


3

यदि आप कुछ और आज़माना चाहते हैं तो GPG में कई फ़ाइलों को एन्क्रिप्ट करने की अन्य बैकअप विधियाँ हैं:

मूल स्रोत: http://www.obsd.hu/docs/Unix-backup-with-aes.txt

vi ~/.bashrc

backup() {
if [[ "$1" = "" ]]; then echo 'specify full path' && exit 1; fi
CURRENTDATE="`date +%F-%Hh`"
echo 'Did you do a screenshot of the Desktop and backup all the Bookmarks of the webbrowser and backup cronjobs, etc...?'
read
echo "START: `date`"
ORIGDIR="$1"; ORIGDIRNORM="`echo $ORIGDIR | sed 's/\/$//g'`"; tar cvf - "${ORIGDIRNORM}/" 2>/dev/null | gzip -9 - 2>/dev/null | openssl aes-256-cbc -salt -out "${ORIGDIRNORM}-backup-${CURRENTDATE}.tar.gz.aes" && cksum "${ORIGDIRNORM}-backup-${CURRENTDATE}.tar.gz.aes" >> checksum.txt
echo "END: `date`"
}

decrypt() {
if [[ "$1" = "" ]]; then echo 'specify full path' && exit 1; fi
CURRENTDATE="`date +%F-%Hh`"
echo 'This will decrypt the backup in the current working directory, are you sure?'
read
echo "START: `date`"
ORIGDIR="$1"
openssl aes-256-cbc -d -salt -in "${ORIGDIR}" | tar -xz -f -
echo "END: `date`"
}

उपयोग: बस एन्क्रिप्शन के लिए "बैकअप डाइरेक्ट्री" का उपयोग करें और "डीआईआरटीओआरटीआई। डीज़। एनएज़" डिक्रिप्ट करें


1

आज ऐसा ही कुछ करने में कामयाब रहे:

  1. टारगेट फ़ाइलों वाली डायरेक्टरी में डायरेक्टरी बदली, और आवश्यक file_names को खोजने के लिए एक बैश स्क्रिप्ट चलाई और उन्हें एक टेक्स्ट फाइल में लिस्ट किया, जिसे मैंने कॉल किया था found.txt

  2. एक बैश स्क्रिप्ट को चलाएं जिसमें gpg2 को प्रत्येक फ़ाइल नाम को लूप में और मेमोरी चर में पढ़ने के लिए कहा जाए, और उसी लूप में मेरी साइनिंग कुंजी का उपयोग करके इसे एन्क्रिप्ट करने के लिए और यह निर्दिष्ट करने के लिए कि यह स्वयं द्वारा पढ़ने के लिए है। gpg2 आपके पास-वाक्यांश में डालने के लिए एक पॉपअप डालता है, जिसमें पॉप-अप में एक छोटा चेक-बॉक्स होता है, जहाँ आप अपने पास-वाक्यांश को सत्र के लिए सक्रिय रखने का विकल्प चुन सकते हैं। बुरा अभ्यास, लेकिन इतना बुरा नहीं है यदि आप नेट पर नहीं हैं, और आप अपने एन्क्रिप्टिंग सत्र के तुरंत बाद पावर-डाउन करते हैं।

  3. एकमात्र समस्या यह थी कि ay / n को संभाला जाना था। तो Y कुंजी पर मेरी उंगली के साथ बैठे और एक मिनट से भी कम समय में 51 नग फाइलों को एन्क्रिप्ट किया।


स्क्रिप्ट नीचे दी गई हैं:

'खोज' स्क्रिप्ट नामक एक फ़ाइल थी FindFilesAndListtoTextfile.sh:

#! /usr/bin/bash
#Try this to list the files you want using the appropriate file identifier i.p.o "DSCN.*":

source="/home/myself/Whatever  #note no gaps on either side of the equal-to sign 
 target="/home/myself/Whatever/found.txt"
 find $source -name "*DSCN*" -type f > $target       

एन्क्रिप्शन स्क्रिप्ट ReadFilenameAndEncrypt.sh कहलाती थी:

#!/bin/bash
line="/home/myself/Whatever/found.txt"
while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "Text read from file: $line"
    gpg2 -e -u mysecretkeyID -r mysecretkeyID "$line"
  done < "$1"

यह एक नियमित उपयोगकर्ता के रूप में चलाया जाना है:

$ bash ReadFilenameAndEncrypt.sh found.txt

उम्मीद है की यह मदद करेगा। पता नहीं कैसे y / n से बचने के लिए है।


0

निम्नलिखित कमांड मेरे लिए तब तक काम करती है जब तक मेरे पास उनमें रिक्त स्थान के साथ कोई फ़ाइल नाम नहीं है।

for file in $(ls | grep -v ".gpg"); do gpg -c --cipher-algo AES256 --compress-algo 1 --batch --passphrase "<password>" $file && rm -f $file; done

आप खोज आदेश का भी उपयोग कर सकते हैं।

for file in $(find /home -type f | grep -v ".gpg"); do gpg -c --cipher-algo AES256 --compress-algo 1 --batch --passphrase "<password>" $file && rm -f $file; done

अंत में यदि आप पासवर्ड के लिए किसी फ़ाइल का उपयोग करना चाहते हैं, तो उपयोग करें:

--passphrase-file <filename>


-1

"एक पासवर्ड दर्ज करें:"

पासवर्ड पढ़ें

खोजो। -type f -exec gpg --passphrase $ password -c {} \;

Hmmmmmm GPG प्रत्येक फ़ाइल के लिए एक GraphicMessageBox पासवर्ड के साथ पूछता है।

इसलिए, मैंने C-ANSI में CRYBULL (क्रिप्टोग्राफी प्रोग्राम जो मैंने बनाया था) का उपयोग करने का निर्णय लिया। आप www.labolida.com पर मुफ्त में डाउनलोड कर सकते हैं

खोजो। -Type f -exec crybull {} {} .cry $ password encode \;


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