Zip/Unzip#
install#
sudo apt-get install zip unzip
zip#
zip {압축 파일명}.zip {압축할 파일 혹은 디렉토리1} {압축할 파일 혹은 디렉토리2}...
$ zip --help
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
Zip 3.0 (July 5th 2008). Usage:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
The default action is to add or replace zipfile entries from list, which
can include the special name - to compress standard input.
If zipfile and list are omitted, zip compresses stdin to stdout.
-f freshen: only changed files -u update: only changed or new files
-d delete entries in zipfile -m move into zipfile (delete OS files)
-r recurse into directories -j junk (don't record) directory names
-0 store only -l convert LF to CR LF (-ll CR LF to LF)
-1 compress faster -9 compress better
-q quiet operation -v verbose operation/print version info
-c add one-line comments -z add zipfile comment
-@ read names from stdin -o make zipfile as old as latest entry
-x exclude the following names -i include only the following names
-F fix zipfile (-FF try harder) -D do not add directory entries
-A adjust self-extracting exe -J junk zipfile prefix (unzipsfx)
-T test zipfile integrity -X eXclude eXtra file attributes
-y store symbolic links as the link instead of the referenced file
-e encrypt -n don't compress these suffixes
unzip#
unzip {압축 파일명}.zip
$ unzip --help
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.
Usage: unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
Default action is to extract files in list, except those in xlist, to exdir;
file[.zip] may be a wildcard. -Z => ZipInfo mode ("unzip -Z" for usage).
-p extract files to pipe, no messages -l list files (short format)
-f freshen existing files, create none -t test compressed archive data
-u update files, create if necessary -z display archive comment only
-v list verbosely/show version info -T timestamp archive to latest
-x exclude files that follow (in xlist) -d extract files into exdir
modifiers:
-n never overwrite existing files -q quiet mode (-qq => quieter)
-o overwrite files WITHOUT prompting -a auto-convert any text files
-j junk paths (do not make directories) -aa treat ALL files as text
-U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields
-C match filenames case-insensitively -L make (some) names lowercase
-X restore UID/GID info -V retain VMS version numbers
-K keep setuid/setgid/tacky permissions -M pipe through "more" pager
-O CHARSET specify a character encoding for DOS, Windows and OS/2 archives
-I CHARSET specify a character encoding for UNIX and other archives
See "unzip -hh" or unzip.txt for more help. Examples:
unzip data1 -x joe => extract all files except joe from zipfile data1.zip
unzip -p foo | more => send contents of foo.zip via pipe into program more
unzip -fo foo ReadMe => quietly replace existing ReadMe if archive file newer
unzip test.zip -d /home/john
tar#
옵션 요약#
# tar.gz 만들기
tar -czvf backup.tar.gz mydir/
# tar.gz 풀기
tar -xzvf backup.tar.gz
# 특정 위치에 풀기
tar -xzvf backup.tar.gz -C /target/path
# 내용 보기
tar -tzvf backup.tar.gz
# 압축 없이 묶기
tar -cvf backup.tar mydir/
# 압축 없이 풀기
tar -xvf backup.tar
c: create, 새 archive 생성
z: gzip 압축, j: bzip2, J: xz
v: verbose, 진행 파일 출력
f: 파일 이름 지정
x: extract, 풀기
z: gzip 압축, j: bzip2, J: xz
v: 진행 출력
f: 파일 이름 지정
C: 특정 위치에 풀기 (미리 만들어진 폴더에)
RSync#
> rsync -avh --progress source/ target/
# 전체 진행률 중심으로 보고 싶으면:
> rsync -avh --info=progress2 /source/ /backup/
# 대용량이면
> rsync -aHAXh --numeric-ids --info=progress2 source/ target/
# 원본과 대상을 완전히 같게 동기화
> rsync -avh --delete /source/ /backup/
# 특정 파일/디렉터리 제외
> rsync -avh \
--exclude 'node_modules/' \
--exclude '*.log' \
--exclude '.git/' \
/source/ /backup/
> rsync -avh --exclude-from=exclude.txt /source/ /backup/
# SSH port, sudo 권한 적용
> rsync -aHAXh \
-e "ssh -p 2222" \
--numeric-ids --info=progress2 \
--rsync-path="sudo rsync" \
/source/ /backup/
#------ ''/' 주의
> ls
/app/data/file1
> rsync -av /app/data/ /backup/data/
/backup/data/file1
> rsync -av /app/data /backup/
/backup/data/file1
PostgreSQL Data Backup Example#
# 1차 사전 복사
> sudo rsync -aHAXh --numeric-ids --info=progress2 \
--rsync-path="sudo rsync" \
user@REMOTE_HOST:/var/lib/postgresql/16/main/ \
/app/postgres16-data/
# PostgreSQL Stop 후 최종 동기화
> sudo rsync -aHAXh --numeric-ids --delete --info=progress2 \
--rsync-path="sudo rsync" \
user@REMOTE_HOST:/var/lib/postgresql/16/main/ \
/app/postgres16-data/
옵션설명#
| 옵션 |
의미 |
-a |
archive 모드. 권한, 소유자, 시간, 심볼릭 링크 등을 보존 |
-v |
verbose. 복사되는 파일 출력 |
-h |
human readable. 용량을 보기 좋게 출력 |
-z |
전송 중 압축. 네트워크 느릴 때 유용 |
--progress |
파일별 진행률 표시 |
--info=progress2 |
전체 진행률 표시 |
--delete |
원본에 없는 파일을 대상에서도 삭제 |
--dry-run |
실제 복사하지 않고 결과만 미리 보기 |
--exclude |
특정 파일/디렉터리 제외 |
--include |
특정 파일/디렉터리 포함 |
--numeric-ids |
사용자명 대신 UID/GID 숫자로 소유권 보존 |
-H |
hard link 보존 |
-A |
ACL 보존 |
-X |
extended attributes 보존 |
-e ssh |
SSH 사용 지정 |
--partial |
중단된 파일 일부를 유지 |
--append-verify |
이어받기 검증 |
--bwlimit |
전송 속도 제한 |
--checksum |
파일 시간/크기 대신 checksum으로 비교 |