admin 管理员组

文章数量: 887021


2024年3月11日发(作者:nodejs用法)

在 Windows 上使用 rsync 同步文件和目录

在 Windows 上使用 rsync 同步文件和目录

rsync 是一个 Unix 系统下的自由的计算机程序,它可以用来从一个地方同步文件和

目录到另外一个地方,而且它使用一种 delta 编码方式来使得所需要传输的数据是尽可能

的少。它被大量使用于站点镜像上。

这里介绍如何在 Windows 系统下来部署 rsync 服务器,并使用客户端同步文件和

目录。一.安装和部署服务器端

首先去下载一个为 Windows 平台开发的 rsync server:cwRsync Server ,下载后

安装和一般的 Windows 安装程序一样,一直点那个“下一步”(Next)就完事了。然后

修改一下配置,默认安装情况下,配置文件在 C:Program

,默认配置内容如下:use chroot = false

strict modes = false

hosts allow = *

log file =

pid file = # Module definitions

# Remember cygwin naming conventions : c:work becomes /cygwin/c/work

#

[test]

path = /cygdrive/c/work

read only = false

transfer logging = yes根据这段配置你很容易做出自己的配置修改,特别注意的是

要把路径 c:work 改成 /cygwin/c/work,修改完配置后,去 Windows 的服务管理器里

面找到 RsyncServer 这一条,把它的属性中的启动类型从“手动”改为“自动,这样下

次开机就会自动运行了,你也可以立即将该服务启动起来。

注意 rsync server 会监听 873 端口,所以如果你有开启防火墙,不要忘了开放 873

端口。二.安装客户端

然后你可以安装一个客户端,cwRsync,也可以在刚才下载 cwRsync Server 的网站

上找到,安装同样很简单,安装完成后建议你把 C:Program FilescwRsyncbin (默认安

装情况下)加入到操作系统环境变量的 PATH 参数中去,然后就可以在命令行里用命令

rsync 来做同步等操作了:

1.打印帮助:

C:>rsycn --help

rsync version 2.6.9 protocol version 29

Copyright (C) 1996-2006 by Andrew Tridgell, Wayne Davison, and

lities: 64-bit files, socketpairs, hard links, symlinks, batchfiles,

inplace, no IPv6, 64-bit system inums, 64-bit internal inumsrsync comes with

ABSOLUTELY NO WARRANTY. This is free software, and you

are welcome to redistribute it under certain conditions. See the GNU

General Public Licence for is a file transfer program capable of

efficient remote update

via a fast differencing : rsync [OPTION]... SRC [SRC]... DEST

or rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST

or rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST

or rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST

or rsync [OPTION]... [USER@]HOST:SRC [DEST]

or rsync [OPTION]... [USER@]HOST::SRC [DEST]

or rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect

to an rsync daemon, and require SRC or DEST to start with a module

s

-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; same as -rlptgoD (no -H)

--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

-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

-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 times

-O, --omit-dir-times omit directories when preserving times

--super receiver attempts super-user activities

-S, --sparse handle sparse files efficiently

-n, --dry-run show what would have been transferred

-W, --whole-file copy files whole (without rsync 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 (default)

--delete-during receiver deletes during transfer, not before

--delete-after receiver deletes after transfer, not before

--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=TIME set I/O 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

-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

--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 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

--version print version number

(-h) --help show this help (-h works with no other options)Use "rsync

--daemon --help" to see the daemon-mode command-line options.

Please see the rsync(1) and (5) man pages for full documentation.

See [url]/[/url] for updates, bug reports, and answers2.

列出 rsync server 端的 modules:

c:>rsync rsync://rsync-server-ip

test3.列出 module test 下的文件和目录列表:

c:>rsyn rsync://rsync-server-ip/test/

drwxr-xr-x 0 2007/06/15 10:09:57 .

drwxr-xr-x 0 2007/06/15 10:17:58 test1

drwxr-xr-x 0 2007/06/21 04:00:00 svntest

drwxr-xr-x 0 2007/06/21 02:00:33 trac

drwxr-xr-x 0 2007/06/21 03:00:27 wiki

-rw-r--r-- 2029823 2007/06/01 04:00:02 java.7z

-rw-r--r-- 361554934 2007/06/01 04:08:56 oracle.7z当然还可以列出 module

下的某个目录下的文件列表:

c:>rsyn rsync://rsync-server-ip/test/wiki/ (注意要列出目录 wiki 下的东西要以/

结尾,不然它只会列出 wiki 目录自身)3.同步整个 module 到本地:

c:> rsync -v -t -l -r rsync://rsync-server-ip/test/ .test

注意:因为同步的时候需要计算服务器文件和本地文件之间的差异等,在同步文件的

过程中 CPU 的占用可能会达到 100%,所以如果你是用它来做计划任务式的备份和同步

的话,最好选择系统空闲的时候,比如早上4点。


本文标签: 文件 安装 配置 目录