在Linux中常用的远程复制命令有三个
-- 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软件包,一台机器通常作为源(sender),另一台机器作为目标(receiver)。您需要确保源机器和目标机器上都已正确安装并配置了 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/ [email protected]:/test/
#将远程内容同步到本地
rsync -avz [email protected]:/test/ /root/test/
监控文件系统的变动情况,并做出通知响应
inotifywait: #用于持续监控,实时输出结果
inotifywatch: #用于短期监控,任务完成后再输出结果
# 常见参数 说明
-m 持续进行监控
-r 递归监控所有子对象
-q 简化输出信息
-e 指定要监控哪些事件类型