• 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 :详细模式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    实例
    - 从本地主机复制文件至远程节点
    	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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    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                  查看帮助
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    实例
    常用选项:
    -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/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    Inotify

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

    inotifywait: #用于持续监控,实时输出结果
    inotifywatch: #用于短期监控,任务完成后再输出结果
    # 常见参数 说明
    -m 持续进行监控
    -r 递归监控所有子对象
    -q 简化输出信息
    -e 指定要监控哪些事件类型
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    inotify+rsync持续更新中
  • 相关阅读:
    存储过程与触发器的练习题
    Jmeter 性能测试之阶梯式场景、波浪式场景
    C语言之指针数组、结构体、动态内存分配
    与Cartesi 技术社区经理Shaheen 的 AMA 回顾
    新手如何免费创建一个自己的网站?
    springboot大学生网络教学平台的设计与实现毕业设计源码281819
    经典机器学习方法(4)—— 感知机
    CRYPTOHACK SYMMETRIC STARTER
    LLaMA-Adapter源码解析
    关于在CentOS服务器上采用pm2 部署node 服务
  • 原文地址:https://blog.csdn.net/xuwenpeng/article/details/133338342