在Linux中常用的远程复制命令有三个
SCP
参数详解
-- SCP(Secure Copy)是一种通过SSH协议进行文件传输的工具,可以在不同Linux主机之间复制文件。
-- 命令格式:
scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target
-- 参数介绍
-3
-4 :强制使用IPV4地址
-6 :强制使用IPV6地址
-B :在复制过程中禁止要求输入密码或密码短语,通过—B可以启用批处理模式
-C :启用压缩
-c cipher :选择一个算法来加密传输中的数据
-F ssh_config:指定一个替代的SSH配置文件,此参数直接传递给ssh
-i identity_file:从指定文件中读取传输时使用的密钥文件,
-l limit:指定带宽限制,默认Kbit/s
-P port:指定远程主机的端口,因scp是基于SSH协议的,默认是22端口
-p :保持原来文件的模式,如文件的修改时间,访问时间
-v :详细模式
实例
- 从本地主机复制文件至远程节点scp local_file remote_username@remote_ip:remote_folder scp local_file remote_username@remote_ip:remote_file scp local_file remote_ip:remote_folder scp local_file remote_ip:remote_file
- 从远程节点复制文件至本地主机scp remote_username@remote_ip:remote_file local_folder scp remote_username@remote_ip:remote_file local_file scp remote_ip:remote_file local_folder scp remote_ip:remote_file local_file
- 从本地主机复制目录至远程节点scp -r local_folder remote_username@remote_ip:remote_folder scp -r local_folder remote_ip:remote_folder
- 从远程节点复制目录至本地主机scp -r remote_username@remote_ip:remote_folder local_folder scp -r remote_ip:remote_folder local_folder
rsync
Rsync是一种快速、多功能的文件复制工具,可以在本地主机或不同主机之间复制文件。
参数详解
-v, --verbose 冗长的详细信息--info=FLAGS --debug=FLAGS 调试输出的详细程度--msgs2stderr 调试专用输出
-q, --quiet 抑制非错误输出--no-motd 抑制后端 MOTD
-c, --checksum 跳过基础校验
-a, --archive 归档模式; 同 -rlptgoD (no -H,-A,-X)--no-OPTION 关闭隐含的选项(e.g. --no-D)
-r, --recursive 递归目录
-R, --relative 使用相对的路径名称--no-implied-dirs 禁止传输隐含目录
-b, --backup 创建备份 (see --suffix & --backup-dir)--backup-dir=DIR 基于DIR创建层次化备份--suffix=SUFFIX 备份后缀 (默认 ~ w/o --backup-dir)
-u, --update 跳过接收方更新过的文件--inplace 就地更新目录文件--append 将数据附加到短文件中??--append-verify --append w/old data in file checksum
-d, --dirs 不递归传递目录
-l, --links 复制软链接
-L, --copy-links 将符号链接转换为引用的文件/目录--copy-unsafe-links 只有不安全的符号链接才会转换--safe-links 忽略指向树外的符号链接--munge-links 对符号链接进行修改使它更安全
-k, --copy-dirlinks 将符号链接转换为真实目录
-K, --keep-dirlinks 将接收端上的符号链接目录视为普通目录
-H, --hard-links 保留硬链接
-p, --perms 保留权限
-E, --executability 保留可执行特性--chmod=CHMOD 影响文件和目录权限
-A, --acls 保持ACL (implies -p)
-X, --xattrs 保留扩展属性
-o, --owner 保留属主
-g, --group 保留属组--devices 保留设备文件--copy-devices 复制设备内容通过一个常规文件--specials 保持指定的文件
-D 同 --devices --specials
-t, --times 保留修改时间
-O, --omit-dir-times 从--times中排除目录
-J, --omit-link-times 从--times中排除链接--super 接收端尝试使用super用户--fake-super 使用扩展属性存储和恢复特权属性
-S, --sparse 将连续空转换为稀疏块--preallocate 向目标文件写之前先分配空间
-n, --dry-run 执行模拟运行不做任何更改
-W, --whole-file 复制整个文件--checksum-choice=STR 选择checksum算法
-x, --one-file-system 不跨越系统边界
-B, --block-size=SIZE 强制使用固定的块校验大小
-e, --rsh=COMMAND 指定远程使用的shell--rsync-path=PROGRAM 指定远程主机上rsync要执行的路径??--existing 接收时跳过创建新文件--ignore-existing 跳过更新文件如果已经存在--remove-source-files 发送后删除源文件--del 在传输过程中删除目标目录中不存在于源目录中的文件和目录--delete 从目标目录中删除多余的文件--delete-before 接收前先进行删除--delete-during 在传输过程中删除目标目录中不存在于源目录中的文件和目录--delete-delay 传输完成后删除--delete-after 在传输完成后,接收方删除文件而不是在传输过程中删除--delete-excluded 只删除在目标目录中排除在外的文件--ignore-missing-args 忽略不存在的源args不报错--delete-missing-args 从目标删除源args--ignore-errors 尽管有IO错误依然删除--force 强制删除目录下的文件--max-delete=NUM 不删除多于 NUM 文件--max-size=SIZE 指定能传输的最大文件大小--min-size=SIZE 不传输小于SIZE大小的文件--partial 保持部分文件传输--partial-dir=DIR 将一部分传输的文件放到DIR中--delay-updates 最后将所有更新的文件放置到位
-m, --prune-empty-dirs 从文件目录链中删除空目录--numeric-ids 不按用户名和映射uid/gid--usermap=STRING 自定义用户名映射--groupmap=STRING 自定义组名映射--chown=USER:GROUP 简单的用户名和组名映射--timeout=SECONDS 设置IO超时时间(秒)--contimeout=SECONDS 设置连接超时时间(秒)
-I, --ignore-times 不跳过匹配大小和时间的文件--size-only 跳过匹配大小的文件
-@, --modify-window=NUM 设置mod-time比较的准确性
-T, --temp-dir=DIR 创建临时文件在DIR目录中
-y, --fuzzy 若目标文件不存在,查找与基准文件相似的文件--compare-dest=DIR 比较接收到与DIR中的文件--copy-dest=DIR ... and include copies of unchanged files--link-dest=DIR hardlink to files in DIR when unchanged
-z, --compress 传输的时候对文件进行压缩--compress-level=NUM 明确指定压缩级别--skip-compress=LIST 在列表中的文件跳过压缩
-C, --cvs-exclude 自动忽略cvs文件
-f, --filter=RULE 添加过滤规则RULE
-F 同 --filter='dir-merge /.rsync-filter'repeated: --filter='- .rsync-filter'--exclude=PATTERN 根据PATTERN排除匹配的文件--exclude-from=FILE 将FILE中文件中的列表排除--include=PATTERN 根据PATTERN来同步文件--include-from=FILE 根据FILE中包含的文件同步--files-from=FILE 从FILE中读取源文件名字列表
-0, --from0 all *from/filter files are delimited by 0s
-s, --protect-args no space-splitting; wildcard chars only--address=ADDRESS 在daemon中将出站套接字绑定到地址--port=PORT 指定双冒号备用端口--sockopts=OPTIONS 自定义TCP选项--blocking-io 在远程Shell中使用阻塞式IO--outbuf=N|L|B 设置输出缓冲区为无、行或块--stats 文件传输的统计数据
-h, --human-readable 以人易读的方式显示数值--progress 显示传输进度
-P 同 --partial --progress
-i, --itemize-changes 输出所有的变更摘要
-M, --remote-option=OPTION 发送OPTION到变更端--out-format=FORMAT 使用FORMAT输出更新--log-file=FILE 将所有同步的信息以日志的形式记录到FILE中--log-file-format=FMT 使用FMT输出日志--password-file=FILE 读取文件中的密码--list-only 显示文件列表而不传递他们--bwlimit=RATE 设置IO带宽--write-batch=FILE 将批量更新写入FILE--only-write-batch=FILE 同 --write-batch but w/o 更新目标--read-batch=FILE 从FILE读取批量更新--protocol=NUM 强制使用旧的协议--iconv=CONVERT_SPEC 请求文件名的字符集转换--checksum-seed=NUM 设置块/文件校验和
-4, --ipv4 使用 IPv4
-6, --ipv6 使用 IPv6
--version 打印版本信息
(-h) --help 查看帮助
实例
常用选项:
-r(recusive)递归拷贝数据,不保留文件属性
# 针对单个文件
rsync -r /root/test01.txt /tmp
# 针对多个文件
rsync -r /root/test01.txt /root/test02.txt /tmp
-a递归拷贝数据,保留文件属性
# 针对单个文件
rsync -a /root/test/test01.txt /tmp
# 针对目录下的所有文件
rsync -a /root/test/ /tmp
--delete进行数据同步时,会删除目标目录中源目录不存在的文件,保持两别强一制性
rsync -av --delete /root/test/ /tmp
--exclude进行数据同步时,排除某些文件或目录
# 利用多个 --exclude 参数
rsync -av --exclude=".*" --exclude="/root/test/*" /root/ /tmp
# 利用 Bash 的大扩号的扩展功能
rsync -av --exclude={".*","/root/test/*"} /root/ /tmp
--include指定必须同步的文件模式,一般与--exclude结合使用
# 指定同步时,排除所有文件,但是不包括以 .txt 结尾的文件
rsync -av --include="*.txt" --exclude='*' /root/ /tmp
#同步数据至远程服务器
rsync -avz /root/test/ root@10.0.0.51:/test/
#将远程内容同步到本地
rsync -avz root@10.0.0.51:/test/ /root/test/
Inotify
监控文件系统的变动情况,并做出通知响应
inotifywait: #用于持续监控,实时输出结果
inotifywatch: #用于短期监控,任务完成后再输出结果
# 常见参数 说明
-m 持续进行监控
-r 递归监控所有子对象
-q 简化输出信息
-e 指定要监控哪些事件类型