여러 파일을 한 번에 암호화


10

프로젝트 아카이브를 생성 한 다음 7z 아카이브를 생성하여 특정 버전을 저장하고 암호화 된 백업을 유지하는 스크립트를 작성 중입니다.

아카이브를 생성하고 암호화 단계에 도달 한 후 gpg가능한 한 번의 호출로 파일을 암호화 하여 사용자가 암호를 한 번만 입력하도록 하고 싶습니다 . 그렇지 않으면, 우리는 사용자 암호를 메모리에 캐시하거나 (실제로하고 싶지 않은) 아카이브 된 모든 단일 프로젝트에 대해 암호를 입력하고 확인해야합니다 (더 나쁜).

여러 파일 이름을 전달 gpg하여 한 번에 모든 파일 이름을 암호화 하는 방법 이 있습니까?

내가 이것을 시도하면 :

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

... 쉘에 다음 오류가 표시됩니다.

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

내가 원하는 것을 할 수있는 방법이 있습니까?


2
왜 먼저 7zip (아마도)을 사용하여 압축 한 다음 GnuPG에 bzip2를 사용하여 다시 압축하라고 지시 합니까? 공간 효율성 측면에서 많은 이점을 얻는다는 것을 알지 못하고 CPU 비용이 많이 듭니다.
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.7zproject2.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`"
}

사용법 : 암호화를 위해 "backup DIRECTORY"를 사용하고 "DIRECTORY.tar.gz.aes를 해독하십시오"


1

오늘 이와 같은 작업을 수행했습니다.

  1. 대상 파일이 포함 된 디렉토리로 디렉토리를 변경하고 Bash 스크립트를 실행하여 필요한 file_names를 찾고이를 텍스트 파일에 나열했습니다 found.txt.

  2. gpg2에게 루프와 메모리 변수로 각 파일 이름을 읽도록 요청하고 같은 루프에서 내 서명 키를 사용하여 암호화하고 나 자신이 읽도록 지정하는 Bash 스크립트를 실행하십시오. gpg2는 패스 프레이즈를위한 팝업을 표시합니다.이 팝업에는 패스 프레이즈를 세션에서 활성 상태로 유지하도록 선택할 수있는 확인란이 있습니다. 연습이 좋지만 인터넷에 연결되어 있지 않고 암호화 세션 직후에 전원을 끄면 나쁘지 않습니다.

  3. 유일한 문제는 처리 될 ay / n이 있다는 것이었다. 손가락으로 Y 키에 앉아서 1 분 이내에 51 개의 nos 파일을 암호화했습니다.


스크립트는 다음과 같습니다.

'찾기'스크립트는 다음과 같은 파일입니다 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

find 명령을 사용할 수도 있습니다.

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

네 쉬운 방법이 있습니다.

for x in *; do 
  gpg -r (yourencrytionkey.com) -o $x.pgp -e $x
done

-1

echo "비밀번호를 입력하십시오 :"

비밀번호를 읽으십시오

찾기 . -type f -exec gpg --passphrase $ password -c {} \;

Hmmmmmm GPG는 GraphicMessageBox를 사용하여 각 파일의 암호를 묻습니다.

그래서 C-ANSI에서 CRYBULL (내가 만든 암호화 프로그램)을 사용하기로 결정했습니다. www.labolida.com 에서 무료로 다운로드 할 수 있습니다.

찾기 . -type f -exec crybull {} {} .cry $ password encode \;


좀 더 정교하게 답변하십시오. 또한이 질문에 이미 답변되었습니다. 질문에 올바르게 대답하기 위해 자주 묻는 질문을 읽으십시오 .
zuazo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.