Aynı anda birden fazla dosyayı şifreleme


10

Proje arşivleri oluşturan ve daha sonra 7z arşivleri oluşturan bir komut dosyası yazıyorum, belirli sürümleri kaydetmemi ve şifreli yedekleri tutmamı kolaylaştırmak için.

Arşivleri oluşturduktan ve şifreleme aşamasına geçtikten sonra, dosyaları gpgyalnızca bir kez parolalarını girmek için mümkünse bir çağrı ile şifrelemek istiyorum . Aksi takdirde, kullanıcının parolasını (gerçekten yapmak istemediğim) belleğe önbelleğe almamız ya da arşivlenen (daha kötü olan) her bir proje için parolalarını girip onaylaması gerekir.

gpgHepsini tek seferde şifrelemesi için birden fazla dosya adı geçirmenin bir yolu var mı ?

Bunu denerseniz:

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

... kabuğunda aşağıdaki hatayı görüyorum:

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

Yapmak istediğim şeyi yapmanın bir yolu var mı?


2
Neden önce sıkıştırmak için 7zip (muhtemelen) kullanıyorsunuz, sonra GnuPG'ye bzip2 kullanarak tekrar sıkıştırmasını söylüyorsunuz ? Bunun alan verimliliği açısından çok fazla kazandığını görmüyorum ve bunun büyük bir CPU'ya mal olduğunu görüyorum.
CVn

1
> Gpg'ye şifrelemek için birden fazla dosya adı geçirmenin bir yolu var mı? Evet, bu yanıtı
Anchan

Yanıtlar:


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

Hayır yok.

Parolayı aşağıdaki gpg seçeneklerinden biriyle geçirmek isteyeceksiniz (ikincisi en güvenli seçim olacaktır):

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

10

GnuPG bunu doğrudan desteklemediğinden, bunu yapmanın yolu, örneğin kullanmak gibi başka bir katman eklemek olacaktır tar.

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

Ve çıkarmak için:

gpg -d projects.gpg | tar x

Sen ile sol olacağım project1.7zve project2.7z. Betiğiniz kaldığınız yerden devam edebilir.


3

Başka bir şey denemek istiyorsanız, GPG birden fazla dosyayı şifrelemek için başka yedekleme yöntemleri vardır:

orijinal kaynak: 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`"
}

Kullanımı: sadece şifreleme için "yedekleme DIRECTORY" kullanın ve "DIRECTORY.tar.gz.aes şifresini çözmek"


1

Bugün böyle bir şey yapmayı başardılar:

  1. Dizin, hedef dosyaları içeren dizine değiştirildi ve gerekli dosya_adlarını bulmak ve onları aradığım bir metin dosyasına listelemek için bir Bash betiği çalıştırdı found.txt.

  2. Gpg2'den her dosya adını bir döngüde ve bir bellek değişkenine okumasını ve aynı döngüde imzalama anahtarımı kullanarak şifrelemek ve kendi başıma okumak için olduğunu belirtmek için bir Bash betiği çalıştırın. gpg2, parolanızı koymak için bir açılır pencere açar; bu pop-up'ın oturumunuz için parolanızı aktif tutmayı seçebileceğiniz küçük bir onay kutusu vardır. Kötü uygulama, ancak Net'te değilseniz ve şifreleme oturumunuzdan hemen sonra kapanırsanız çok kötü değil.

  3. Tek sorun, ele alınacak ay / n olmasıydı. Parmağımla Y tuşuna oturdum ve bir dakikadan az bir sürede 51 nos dosyasını şifreledim.


Komut dosyaları aşağıda verilmiştir:

'Find' betiği şu adlı bir dosyaydı 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       

Şifreleme komut dosyasına ReadFilenameAndEncrypt.sh adı verildi:

#!/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"

Bu normal bir kullanıcı olarak çalıştırılacaktır:

$ bash ReadFilenameAndEncrypt.sh found.txt

Bu yardımcı olur umarım. Y / n'den nasıl kaçınılacağını çözemedim.


0

İçinde boşluk olan dosya isimlerim olmadığı sürece aşağıdaki komut benim için çalışıyor.

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

Ayrıca find komutunu da kullanabilirsiniz.

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

Son olarak, parola için bir dosya kullanmak istiyorsanız, şunu kullanın:

--passphrase-file <filename>


-1

echo "Bir şifre girin:"

şifreyi oku

bulmak. -tipi f -exec gpg --şifre $ şifre -c {} \;

Hmmmmmm GPG, GraphicMessageBox ile her dosya için bir şifre ister.

Bu yüzden C-ANSI'de CRYBULL'u (oluşturduğum şifreleme programı) kullanmaya karar verdim. Www.labolida.com adresinden ücretsiz olarak indirebilirsiniz.

bulmak. -tip f -exec crybull {} {} .cry $ şifre kodlaması \;


Lütfen daha ayrıntılı cevaplar vermeye çalışın. Ayrıca, bu soru zaten cevaplanmıştır. Soruları düzgün bir şekilde yanıtlamayı öğrenmek için SSS bölümünü okuyun .
zuazo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.