Linux学习之远程拷贝数据命令

在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 是一个用于文件同步和备份的工具,它通过比较文件的差异性来进行快速和高效的数据传输。
注:需要在同步的两台机器上都安装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/

Inotify

监控文件系统的变动情况,并做出通知响应

inotifywait: #用于持续监控,实时输出结果
inotifywatch: #用于短期监控,任务完成后再输出结果
# 常见参数 说明
-m 持续进行监控
-r 递归监控所有子对象
-q 简化输出信息
-e 指定要监控哪些事件类型
inotify+rsync持续更新中

你可能感兴趣的:(Linux,linux,学习,运维)