ubuntu linux rsync 사용법 불필요한 파일 제외하고 복사하기
개인적으로 주로 사용하는 명령어중 하나는 rsync 입니다. rsync 는 android 개발시 .git .repo .gitignore 와 같은 파일과 폴더를 제외하고 최신 파일들만 복사해 주는 역할을 할 수 있기 때문에 file sync 를 맞추는 경우 주로 사용하게 됩니다.
이를 crontab과 함께 잘 이용하면 정기적인 backup 용도로 활용할 수도 있습니다.
주로 사용하는 명령은 아래와 같습니다.
$ rsync -avzt --exclude=.git --exclude=.repo --exclude=.gitignore ~/git/org_src/ ~/target_src
이때 사용한 옵션은 v,a,t,z 가 있는데 각각의 기능은 아래와 같습니다.
-v : verbose
-a : archive mode
-t : preserve times 원본 파일 시간유지
-z : compress file data during the transfer 전송시 파일 압축
--exclude=PATTERN : exclude files matching PATTERN 패턴과 일차하는 파일을 제외하고 복사
이 옵션들 외에도 rsync 에 관한 많은 옵션들이 있습니다.
특히 backup 용도로 사용할 경우 network copy 도 가능하다는 것을 알면 더욱 훌륭한 tool 이라는 것을 알 수 있습니다.
rsync 의 특별한 기능 중 하나는 대용량 파일의 경우 일정 부분만 수정되었을 경우 모든 파일을 복사하지 않고 수정된 부분만 복사하는 기능이 가능하다는 것 입니다. 그래서 첫번째 복사가 아니라면 일반적인 copy 작업보다 훨씬 적은 시간을 들여 파일을 복사하는 것이 가능합니다.
-v, --verbose increase verbosity
-q, --quiet suppress non-error messages
--no-motd suppress daemon-mode MOTD (see manpage caveat)
-c, --checksum skip based on checksum, not mod-time & size
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
--no-OPTION turn off an implied OPTION (e.g. --no-D)
-r, --recursive recurse into directories
-R, --relative use relative path names
--no-implied-dirs don't send implied dirs with --relative
-b, --backup make backups (see --suffix & --backup-dir)
--backup-dir=DIR make backups into hierarchy based in DIR
--suffix=SUFFIX set backup suffix (default ~ w/o --backup-dir)
-u, --update skip files that are newer on the receiver
--inplace update destination files in-place (SEE MAN PAGE)
--append append data onto shorter files
--append-verify like --append, but with old data in file checksum
-d, --dirs transfer directories without recursing
-l, --links copy symlinks as symlinks
-L, --copy-links transform symlink into referent file/dir
--copy-unsafe-links only "unsafe" symlinks are transformed
--safe-links ignore symlinks that point outside the source tree
-k, --copy-dirlinks transform symlink to a dir into referent dir
-K, --keep-dirlinks treat symlinked dir on receiver as dir
-H, --hard-links preserve hard links
-p, --perms preserve permissions
-E, --executability preserve the file's executability
--chmod=CHMOD affect file and/or directory permissions
-A, --acls preserve ACLs (implies --perms)
-X, --xattrs preserve extended attributes
-o, --owner preserve owner (super-user only)
-g, --group preserve group
--devices preserve device files (super-user only)
--specials preserve special files
-D same as --devices --specials
-t, --times preserve modification times
-O, --omit-dir-times omit directories from --times
--super receiver attempts super-user activities
--fake-super store/recover privileged attrs using xattrs
-S, --sparse handle sparse files efficiently
-n, --dry-run perform a trial run with no changes made
-W, --whole-file copy files whole (without delta-xfer algorithm)
-x, --one-file-system don't cross filesystem boundaries
-B, --block-size=SIZE force a fixed checksum block-size
-e, --rsh=COMMAND specify the remote shell to use
--rsync-path=PROGRAM specify the rsync to run on the remote machine
--existing skip creating new files on receiver
--ignore-existing skip updating files that already exist on receiver
--remove-source-files sender removes synchronized files (non-dirs)
--del an alias for --delete-during
--delete delete extraneous files from destination dirs
--delete-before receiver deletes before transfer, not during
--delete-during receiver deletes during the transfer
--delete-delay find deletions during, delete after
--delete-after receiver deletes after transfer, not during
--delete-excluded also delete excluded files from destination dirs
--ignore-errors delete even if there are I/O errors
--force force deletion of directories even if not empty
--max-delete=NUM don't delete more than NUM files
--max-size=SIZE don't transfer any file larger than SIZE
--min-size=SIZE don't transfer any file smaller than SIZE
--partial keep partially transferred files
--partial-dir=DIR put a partially transferred file into DIR
--delay-updates put all updated files into place at transfer's end
-m, --prune-empty-dirs prune empty directory chains from the file-list
--numeric-ids don't map uid/gid values by user/group name
--timeout=SECONDS set I/O timeout in seconds
--contimeout=SECONDS set daemon connection timeout in seconds
-I, --ignore-times don't skip files that match in size and mod-time
--size-only skip files that match in size
--modify-window=NUM compare mod-times with reduced accuracy
-T, --temp-dir=DIR create temporary files in directory DIR
-y, --fuzzy find similar file for basis if no dest file
--compare-dest=DIR also compare destination files relative to DIR
--copy-dest=DIR ... and include copies of unchanged files
--link-dest=DIR hardlink to files in DIR when unchanged
-z, --compress compress file data during the transfer
--compress-level=NUM explicitly set compression level
--skip-compress=LIST skip compressing files with a suffix in LIST
-C, --cvs-exclude auto-ignore files the same way CVS does
-f, --filter=RULE add a file-filtering RULE
-F same as --filter='dir-merge /.rsync-filter'
repeated: --filter='- .rsync-filter'
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE
--include=PATTERN don't exclude files matching PATTERN
--include-from=FILE read include patterns from FILE
--files-from=FILE read list of source-file names from FILE
-0, --from0 all *-from/filter files are delimited by 0s
-s, --protect-args no space-splitting; only wildcard special-chars
--address=ADDRESS bind address for outgoing socket to daemon
--port=PORT specify double-colon alternate port number
--sockopts=OPTIONS specify custom TCP options
--blocking-io use blocking I/O for the remote shell
--stats give some file-transfer stats
-8, --8-bit-output leave high-bit chars unescaped in output
-h, --human-readable output numbers in a human-readable format
--progress show progress during transfer
-P same as --partial --progress
-i, --itemize-changes output a change-summary for all updates
--out-format=FORMAT output updates using the specified FORMAT
--log-file=FILE log what we're doing to the specified FILE
--log-file-format=FMT log updates using the specified FMT
--password-file=FILE read daemon-access password from FILE
--list-only list the files instead of copying them
--bwlimit=KBPS limit I/O bandwidth; KBytes per second
--write-batch=FILE write a batched update to FILE
--only-write-batch=FILE like --write-batch but w/o updating destination
--read-batch=FILE read a batched update from FILE
--protocol=NUM force an older protocol version to be used
--iconv=CONVERT_SPEC request charset conversion of filenames
-4, --ipv4 prefer IPv4
-6, --ipv6 prefer IPv6
--version print version number
rsync는 잘 사용하면 좋은 tool 이지만 모르면 그저 알아먹기 힘든 리눅스 명령어일 뿐입니다. 다른 linux 명령도 마찬가지 이긴 합니다. ^^
이상 ubuntu linux rsync 사용법 불필요한 파일 제외하고 복사하기에 대한 글 이였습니다.
Ubuntu (linux) schedule command 예약 작업하는 방법과 명령어 crontab 사용법 (0) | 2014.10.24 |
---|---|
Ubuntu PC 이름 알아내기, Ubuntu kernel version 알아내기 (0) | 2014.10.21 |
ADB 로 화면 캡쳐하여 저장하는 방법 (ADB screen capture) (0) | 2014.09.25 |
Ubunut 에서 telnet 연결 끊기 disconnect telnet connection (0) | 2014.09.11 |
android source web 에서 확인 하는 방법 (0) | 2013.02.05 |