zoukankan      html  css  js  c++  java
  • rsync增量复制命令用法和守护进程的配置

    实验系统 rhel6.5

    从本地到本地           《========》  cp

    rsync -avz  src  dst

    rsync -avz src/ dst

    从远程到本地         

    rsync -avz -e "ssh -p 52113" root@192.168.1.105:/etc/passwd   /tmp/                      -e "ssh -p 52113"  这个参数意思就是加密通道的意思

    mkdir /abc

    rsync --avz -e "ssh -p 52113"  root@192.168.1.105:/etc/  /abc                                      

    mkdir  /bcd

    rsync -avz  -e "ssh -p 52113"  root@192.168.1.105:/etc /bcd

    mkdir /ddd

    touch /ddd/{a,b,c,d,e}.txt

    echo ,dhfakebfaksejflafnaler9qor903289473289  >>  /bcd/a.txt

    cat /bcd/a.txt

    rsync -avz /ddd/  /bcd

    cat /bcd/a.txt

    echo sdjfhalfjawleurwerjh9q834rhqakfawn  >> /bcd/c.txt

    rsync -avzu /ddd/  /bcd

    从本地到远程

    rsync -avz  -e "ssh -p 52113"   /etc/passwd   root@192.168.1.105:~

    例如:                                  rsync是增量复制的

    [root@nagios-server ~]# mkdir src

    [root@nagios-server ~]# touch src/{a,b,c,d,e,f,g,h,i,j,k}.txt

    [root@nagios-server ~]# mkdir dst

    [root@nagios-server ~]# ls dst  

    [root@nagios-server ~]# rsync -r   src/   dst/          -r参数src/下面的所有数据,并且还不会保留source数据原来的属性信息,比如是在root用户将普通用户的数据放到root的家目录,那么此时普通的用户数据的属性都会变成跟其他原来root其他文件一样的属性

    [root@nagios-server ~]# rm -rf dst/*

    [root@nagios-server ~]# rsync -avz    src   dst/   -avz在生产环境是经常用的,也是差不多必须要加的。-a参数是保留source的所有属性信息,-v是输出信息,-z是传输过程为了加速就做的压缩技术   第一个src最后的有斜杠“/”是说把src下面的所有数据都给dst目录,不包括src这个目录,相当于cp -r src/*  dst/;第二个src没有 "/"   相当于cp -r src dst/.

    [root@nagios-server ~]# echo "sd2342a8954329475kf923"  >> dst/a.txt

    [root@nagios-server ~]# rsync -avz src dst/   加上-u参数的意思就是如果源数据跟目标有一样的文件名的时候源数据放到目标处的时候不覆盖目标数据原来的文件。

    [root@nagios-server ~]#cat  dst/a.txt

     -u参数的例子:

    [root@nagios-server ~]# echo "sdfjhalkfjasdfhawkerhakefnawerhaweuf"  >> dst/a.txt

    [root@nagios-server ~]# rsync -avzu src dst/     一个没有-u参数,一个有-u参数

    [root@nagios-server ~]#cat  dst/a.txt   看看跟第一个的参数有没有区别

    [root@nagios-server ~]#  rsync -avz --include 'p*' --exclude 'f*' root@192.168.1.106:/etc/     dst/    意思是把远端的/etc/目录下的除了f开头的不能推到本地目录来之外,其他的都可以,并不是因为 --include 'p*' 这个东东就只把远端etc的p开头的拿过来,是说除了/etc/除了f开头的不能推到本地目录来之外,/etc下的所有文件目录都可以推送到本地来目录来

     [root@nagios-server ~]#  rsync -avz --bwlimit='10K'  root@192.168.1.106:/etc/     dst/    这是说限最大的文件大小是10k,大于10k的文件不让传输

    参数用法 

    -a     保留source的所有信息

    -v     显示信息

    -z     对要备份的文件在传输时进行压缩处理,但并不是说会对source的文件进行压缩。从source传过来的文件是怎样的到target也是怎样的。只是在传输过程对文件进行了压缩一下而已,但并不会改变文件的原本状态

    -c, --checksum 打开校验开关,强制对文件传输进行校验。
    -r, --recursive 对子目录以递归模式处理。
    -R, --relative 使用相对路径信息。
    -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
    --backup-dir 将备份文件(如~filename)存放在在目录下。 -suffix=SUFFIX 定义备份文件前缀。
    -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。
    -l, --links 保留软链结。
    -L, --copy-links 想对待常规文件一样处理软链结。
    --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结。
    --safe-links 忽略指向SRC路径目录树以外的链结。
    -H, --hard-links 保留硬链结。
    -p, --perms 保持文件权限。
    -o, --owner 保持文件属主信息。
    -g, --group 保持文件属组信息。
    -D, --devices 保持设备文件信息。
    -t, --times 保持文件时间信息。
    -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间。
    -n, --dry-run现实哪些文件将被传输。
    -w, --whole-file 拷贝文件,不进行增量检测。
    -x, --one-file-system 不要跨越文件系统边界。
    -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节。
    -e, --rsh=command 指定使用rsh、ssh方式进行数据同步。
    --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。
    -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。
    --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。
    --delete 删除那些DST中SRC没有的文件。
    --delete-excluded 同样删除接收端那些被该选项指定排除的文件。
    --delete-after 传输结束以后再删除。
    --ignore-errors 及时出现IO错误也进行删除。
    --max-delete=NUM 最多删除NUM个文件。
    --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输。
    --force 强制删除目录,即使不为空。
    --numeric-ids 不将数字的用户和组id匹配为用户名和组名。
    --timeout=time ip超时时间,单位为秒。
    -I, --ignore-times 不跳过那些有同样的时间和长度的文件。
    --size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。
    --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0。
    -T --temp-dir=DIR 在DIR中创建临时文件。
    --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份。
    -P 等同于 --partial。 --progress 显示备份过程。
    -z, --compress 对备份的文件在传输时进行压缩处理。
    --exclude=PATTERN 指定排除不需要传输的文件模式。
    --include=PATTERN 指定不排除而需要传输的文件模式。
    --exclude-from=FILE 排除FILE中指定模式的文件。
    --include-from=FILE 不排除FILE指定模式匹配的文件。
    --version 打印版本信息。
    --address 绑定到特定的地址。
    --config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件。
    --port=PORT 指定其他的rsync服务端口。
    --blocking-io 对远程shell使用阻塞IO。
    -stats 给出某些文件的传输状态。
    --progress 在传输时现实传输过程。
    --log-format=formAT 指定日志文件格式。
    --password-file=FILE 从FILE中得到密码。
    --bwlimit=KBPS 限制I/O带宽,KBytes per second。
    -h, --help 显示帮助信息。
     
    上面介绍的是rsync的命令  接下来介绍rsync的daemon模式
    [root@nagios-server ~]# rpm -qa rsync   | grep rsync               如果没有正确信息的话   执行   yum -y install rsync

    [root@rsyncd-server ~]# vim /etc/rsyncd.conf   此文件默认是没有的,要自己建立并编辑一下内容

    
    port=899  # 指定rsync端口。默认873
    uid = rsync  #rsync服务的运行用户,默认是nobody,文件传输成功后属主将是这个uid   不管用户名是什么,一定要查看服务端uid,gid跟客户端的uid,gid的数字是不是一样
    gid = rsync # rsync服务的运行组,默认是nobody,文件传输成功后属组将是这个gid
    use chroot = no # rsync daemon在传输前是否切换到指定的path目录下,并将其监禁在内
    max connections = 200 # 客户端最大连接数量,0表示没有限制
    timeout = 300         # 在这个时间内客户端跟服务端没有任何数据传输就断开,0表示永远等待
    file = /var/rsyncd/rsync.motd   # 客户端连接过来显示的消息
    pid file = /var/run/rsyncd.pid       # 指定rsync daemon的pid文件
    lock file = /var/run/rsync.lock      # 指定锁文件
    log file = /var/log/rsyncd.log       # 指定rsync的日志文件,而不把日志发送给syslog
    dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2  # 指定哪些文件不用进行压缩传输
     
    ###########下面指定模块,并设定模块配置参数,可以创建多个模块###########
    [fangyl]        # 模块ID
    path = /fangyl/ # 指定该模块的路径,该参数必须指定。启动rsync服务前该目录必须存在。rsync请求访问模块本质就是访问该路径。
    ignore errors      # 在数据传输的时候报错或是有异常就忽略的意思
    read only = false  # 指定该模块是否可读写,即能否上传文件,false表示可读写,true表示可读不可写。所有模块默认不可上传
    write only = false # 指定该模式是否支持下载,设置为true表示客户端不能下载。所有模块默认可下载
    list = false       # 客户端请求显示模块列表时,该模块是否显示出来,设置为false则该模块为隐藏模块。默认true
    hosts allow = 192.168.0.0/24 # 指定允许连接到该模块的机器,多个ip用空格隔开或者设置区间
    hosts deny = 0.0.0.0/32   # 指定不允许连接到该模块的机器
    auth users = rsync_backup # 指定连接到该模块的用户列表,只有列表里的用户才能连接到模块,用户名和对应密码保存在secrts file中,
                              # 这里使用的不是系统用户,而是虚拟用户。不设置时,默认所有用户都能连接,但使用的是匿名连接
    secrets file = /etc/rsyncd.passwd # 保存auth users用户列表的用户名和密码,每行包含一个username:passwd。由于"strict modes"  如果要是客户端跟服务端的权限不一样的话,那么在客户端加上--password-file=/etc/rsyncd.passwd这个参数的话还是要让你手动输入密码
                                      # 默认为true,所以此文件要求非rsync daemon用户不可读写。只有启用了auth users该选项才有效。
    [fangyy]    # 以下定义的是第二个模块
    path=/fangyy/
    read only = false
    ignore errors
    comment = anyone can access

    如果像上面这样直接就把内容写进/etc/rsyncd.conf文件的话,那么客户端执行的时候会报错的,要把中文的xinetd改了disabled = no 还是不能管理rsync

    [root@rsyncd-server ~]#mkdir /fangyl  ; touch  /fangyl/{a,b,c,d,e,f,g}.txt

    [root@rsyncd-server ~]#chown -R rsync.rsync /fangyl 

    [root@rsyncd-server ~]#chmod 600 /etc/rsyncd.passwd

    [root@rsyncd-server ~]#echo 'rsync_backup:helloworld' > /etc/rsyncd.passwd

    [root@rsyncd-server ~]#useradd -s /sbin/nologin rsync

    [root@rsyncd-server ~]#rsync --daemon

    [root@rsyncd-server ~]#lsof -i :873

    [root@rsyncd-server ~]#id rsync

    客户端认证

    显示推的方式 去掉这个参数就要自己输密码--password-file=/etc/rsync.passwd  放到最后面

    [root@rsyncd-client ~]#echo 'helloworld' > /etc/rsync.passwd

    [root@rsyncd-client ~]#chmod 600 /etc/rsyncd.passwd 

    [root@rsyncd-client ~]#

    [root@rsyncd-client ~]#  

    [root@rsyncd-client ~]#rsync -avz /etc/passwd  rsync_backup@192.168.0.10::fangyl --password-file=/etc/rsync.pass     这是推的方式。 这句话的意思就是将本地的passwd文件推送到模块下目录里

     Access via rsync daemon:
             Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
                   rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
             Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
                   rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

    拉的方式只是换一下路径而已。

    -v, --verbose 详细模式输出。 -q, --quiet 精简输出模式。 -c, --checksum 打开校验开关,强制对文件传输进行校验。 -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。 -r, --recursive 对子目录以递归模式处理。 -R, --relative 使用相对路径信息。 -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。 --backup-dir 将备份文件(如~filename)存放在在目录下。 -suffix=SUFFIX 定义备份文件前缀。 -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。 -l, --links 保留软链结。 -L, --copy-links 想对待常规文件一样处理软链结。 --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结。 --safe-links 忽略指向SRC路径目录树以外的链结。 -H, --hard-links 保留硬链结。 -p, --perms 保持文件权限。 -o, --owner 保持文件属主信息。 -g, --group 保持文件属组信息。 -D, --devices 保持设备文件信息。 -t, --times 保持文件时间信息。 -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间。 -n, --dry-run现实哪些文件将被传输。 -w, --whole-file 拷贝文件,不进行增量检测。 -x, --one-file-system 不要跨越文件系统边界。 -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节。 -e, --rsh=command 指定使用rsh、ssh方式进行数据同步。 --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。 -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。 --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。 --delete 删除那些DST中SRC没有的文件。 --delete-excluded 同样删除接收端那些被该选项指定排除的文件。 --delete-after 传输结束以后再删除。 --ignore-errors 及时出现IO错误也进行删除。 --max-delete=NUM 最多删除NUM个文件。 --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输。 --force 强制删除目录,即使不为空。 --numeric-ids 不将数字的用户和组id匹配为用户名和组名。 --timeout=time ip超时时间,单位为秒。 -I, --ignore-times 不跳过那些有同样的时间和长度的文件。 --size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。 --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0。 -T --temp-dir=DIR 在DIR中创建临时文件。 --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份。 -P 等同于 --partial。 --progress 显示备份过程。 -z, --compress 对备份的文件在传输时进行压缩处理。 --exclude=PATTERN 指定排除不需要传输的文件模式。 --include=PATTERN 指定不排除而需要传输的文件模式。 --exclude-from=FILE 排除FILE中指定模式的文件。 --include-from=FILE 不排除FILE指定模式匹配的文件。 --version 打印版本信息。 --address 绑定到特定的地址。 --config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件。 --port=PORT 指定其他的rsync服务端口。 --blocking-io 对远程shell使用阻塞IO。 -stats 给出某些文件的传输状态。 --progress 在传输时现实传输过程。 --log-format=formAT 指定日志文件格式。 --password-file=FILE 从FILE中得到密码。 --bwlimit=KBPS 限制I/O带宽,KBytes per second。 -h, --help 显示帮助信息。

    来自: http://man.linuxde.net/rsync
    -v, --verbose 详细模式输出。 -q, --quiet 精简输出模式。 -c, --checksum 打开校验开关,强制对文件传输进行校验。 -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。 -r, --recursive 对子目录以递归模式处理。 -R, --relative 使用相对路径信息。 -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。 --backup-dir 将备份文件(如~filename)存放在在目录下。 -suffix=SUFFIX 定义备份文件前缀。 -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。 -l, --links 保留软链结。 -L, --copy-links 想对待常规文件一样处理软链结。 --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结。 --safe-links 忽略指向SRC路径目录树以外的链结。 -H, --hard-links 保留硬链结。 -p, --perms 保持文件权限。 -o, --owner 保持文件属主信息。 -g, --group 保持文件属组信息。 -D, --devices 保持设备文件信息。 -t, --times 保持文件时间信息。 -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间。 -n, --dry-run现实哪些文件将被传输。 -w, --whole-file 拷贝文件,不进行增量检测。 -x, --one-file-system 不要跨越文件系统边界。 -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节。 -e, --rsh=command 指定使用rsh、ssh方式进行数据同步。 --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。 -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。 --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。 --delete 删除那些DST中SRC没有的文件。 --delete-excluded 同样删除接收端那些被该选项指定排除的文件。 --delete-after 传输结束以后再删除。 --ignore-errors 及时出现IO错误也进行删除。 --max-delete=NUM 最多删除NUM个文件。 --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输。 --force 强制删除目录,即使不为空。 --numeric-ids 不将数字的用户和组id匹配为用户名和组名。 --timeout=time ip超时时间,单位为秒。 -I, --ignore-times 不跳过那些有同样的时间和长度的文件。 --size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。 --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0。 -T --temp-dir=DIR 在DIR中创建临时文件。 --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份。 -P 等同于 --partial。 --progress 显示备份过程。 -z, --compress 对备份的文件在传输时进行压缩处理。 --exclude=PATTERN 指定排除不需要传输的文件模式。 --include=PATTERN 指定不排除而需要传输的文件模式。 --exclude-from=FILE 排除FILE中指定模式的文件。 --include-from=FILE 不排除FILE指定模式匹配的文件。 --version 打印版本信息。 --address 绑定到特定的地址。 --config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件。 --port=PORT 指定其他的rsync服务端口。 --blocking-io 对远程shell使用阻塞IO。 -stats 给出某些文件的传输状态。 --progress 在传输时现实传输过程。 --log-format=formAT 指定日志文件格式。 --password-file=FILE 从FILE中得到密码。 --bwlimit=KBPS 限制I/O带宽,KBytes per second。 -h, --help 显示帮助信息。

    来自: http://man.linuxde.net/rsync
    -v, --verbose 详细模式输出。 -q, --quiet 精简输出模式。 -c, --checksum 打开校验开关,强制对文件传输进行校验。 -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。 -r, --recursive 对子目录以递归模式处理。 -R, --relative 使用相对路径信息。 -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。 --backup-dir 将备份文件(如~filename)存放在在目录下。 -suffix=SUFFIX 定义备份文件前缀。 -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。 -l, --links 保留软链结。 -L, --copy-links 想对待常规文件一样处理软链结。 --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结。 --safe-links 忽略指向SRC路径目录树以外的链结。 -H, --hard-links 保留硬链结。 -p, --perms 保持文件权限。 -o, --owner 保持文件属主信息。 -g, --group 保持文件属组信息。 -D, --devices 保持设备文件信息。 -t, --times 保持文件时间信息。 -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间。 -n, --dry-run现实哪些文件将被传输。 -w, --whole-file 拷贝文件,不进行增量检测。 -x, --one-file-system 不要跨越文件系统边界。 -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节。 -e, --rsh=command 指定使用rsh、ssh方式进行数据同步。 --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。 -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。 --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。 --delete 删除那些DST中SRC没有的文件。 --delete-excluded 同样删除接收端那些被该选项指定排除的文件。 --delete-after 传输结束以后再删除。 --ignore-errors 及时出现IO错误也进行删除。 --max-delete=NUM 最多删除NUM个文件。 --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输。 --force 强制删除目录,即使不为空。 --numeric-ids 不将数字的用户和组id匹配为用户名和组名。 --timeout=time ip超时时间,单位为秒。 -I, --ignore-times 不跳过那些有同样的时间和长度的文件。 --size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。 --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0。 -T --temp-dir=DIR 在DIR中创建临时文件。 --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份。 -P 等同于 --partial。 --progress 显示备份过程。 -z, --compress 对备份的文件在传输时进行压缩处理。 --exclude=PATTERN 指定排除不需要传输的文件模式。 --include=PATTERN 指定不排除而需要传输的文件模式。 --exclude-from=FILE 排除FILE中指定模式的文件。 --include-from=FILE 不排除FILE指定模式匹配的文件。 --version 打印版本信息。 --address 绑定到特定的地址。 --config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件。 --port=PORT 指定其他的rsync服务端口。 --blocking-io 对远程shell使用阻塞IO。 -stats 给出某些文件的传输状态。 --progress 在传输时现实传输过程。 --log-format=formAT 指定日志文件格式。 --password-file=FILE 从FILE中得到密码。 --bwlimit=KBPS 限制I/O带宽,KBytes per second。 -h, --help 显示帮助信息。

    来自: http://man.linuxde.net/rsync
    -z, --compress 对备份的文件在传输时进行压缩处理。

    来自: http://man.linuxde.net/rsync
    -z, --compress 对备份的文件在传输时进行压缩处理。

    来自: http://man.linuxde.net/rsync
  • 相关阅读:
    《移动Web前端高效开发实战》笔记4--打造单页应用SPA
    《移动Web前端高效开发实战》笔记3--代码检查任务
    《移动Web前端高效开发实战》笔记2——使用Gulp构建一个ECMAScript 6和Sass应用
    《移动Web前端高效开发实战》笔记1——静态布局在移动端上的自适应
    Node.js 历史
    《超实用的Node.js代码段》连载三:Node.js深受欢迎的六大原因
    《超实用的Node.js代码段》连载二:正确拼接Buffer
    《超实用的Node.js代码段》连载一:获取Buffer对象字节长度
    换个地方写博客
    【转一篇出处不明的文章】 Windows多线程通信方式
  • 原文地址:https://www.cnblogs.com/fyy-hhzzj/p/7813710.html
Copyright © 2011-2022 走看看