Linux操作
文件
服务器间传输文件
rsync
需要安装, 但是能设置过滤文件夹
# 安装
yum -y install rsync
# 使用示例
rsync -ravP -e 'ssh -p 2222' user@remote-server:/path/to/remote/folder /path/to/local/folder
# -v:显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。
# -P:显示文件传输的进度信息。(实际上"-P"="--partial --progress",其中的"--progress"才是显示进度信息的)。
# -n --dry-run :仅测试传输,而不实际传输。常和"-vvvv"配合使用来查看rsync是如何工作的。
# -a --archive :归档模式,表示递归传输并保持文件属性。等同于"-rtopgDl"。
# -r --recursive:递归到目录中去。
# -t --times:保持mtime属性。强烈建议任何时候都加上"-t",否则目标文件mtime会设置为系统时间,导致下次更新检查出mtime不同从而导致增量传输无效。
# -o --owner:保持owner属性(属主)。
# -g --group:保持group属性(属组)。
# -p --perms:保持perms属性(权限,不包括特殊权限)。
# -D :是"--device --specials"选项的组合,即也拷贝设备文件和特殊文件。
# -l --links:如果文件是软链接文件,则拷贝软链接本身而非软链接所指向的对象。
# -z :传输时进行压缩提高效率。
# -R --relative:使用相对路径。意味着将命令行中指定的全路径而非路径最尾部的文件名发送给服务端,包括它们的属性。用法见下文示例。
# --size-only :默认算法是检查文件大小和mtime不同的文件,使用此选项将只检查文件大小。
# -u --update :仅在源mtime比目标已存在文件的mtime新时才拷贝。注意,该选项是接收端判断的,不会影响删除行为。
# -d --dirs :以不递归的方式拷贝目录本身。默认递归时,如果源为"dir1/file1",则不会拷贝dir1目录,使用该选项将拷贝dir1但不拷贝file1。
# --max-size :限制rsync传输的最大文件大小。可以使用单位后缀,还可以是一个小数值(例如:"--max-size=1.5m")
# --min-size :限制rsync传输的最小文件大小。这可以用于禁止传输小文件或那些垃圾文件。
# --exclude :指定排除规则来排除不需要传输的文件。
# --delete :以SRC为主,对DEST进行同步。多则删之,少则补之。注意"--delete"是在接收端执行的,所以它是在exclude/include规则生效之后才执行的。
# -b --backup :对目标上已存在的文件做一个备份,备份的文件名后默认使用"~"做后缀。
# --backup-dir:指定备份文件的保存路径。不指定时默认和待备份文件保存在同一目录下。
# -e :指定所要使用的远程shell程序,默认为ssh。
# --port :连接daemon时使用的端口号,默认为873端口。
# --password-file:daemon模式时的密码文件,可以从中读取密码实现非交互式。注意,这不是远程shell认证的密码,而是rsync模块认证的密码。
# -W --whole-file:rsync将不再使用增量传输,而是全量传输。在网络带宽高于磁盘带宽时,该选项比增量传输更高效。
# --existing :要求只更新目标端已存在的文件,目标端还不存在的文件不传输。注意,使用相对路径时如果上层目录不存在也不会传输。
# --ignore-existing:要求只更新目标端不存在的文件。和"--existing"结合使用有特殊功能,见下文示例。
# --remove-source-files:要求删除源端已经成功传输的文件。
scp
不需要安装, 但是不能过滤文件夹或文件
# 本地传输到远程服务器
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_folder local_file
# 或者
scp remote_username@remote_ip:remote_file local_file
# 或者
scp remote_ip:remote_folder local_file
# 或者
scp remote_ip:remote_file local_file
# -1: 强制scp命令使用协议ssh1
# -2: 强制scp命令使用协议ssh2
# -4: 强制scp命令只使用IPv4寻址
# -6: 强制scp命令只使用IPv6寻址
# -B: 使用批处理模式(传输过程中不询问传输口令或短语)
# -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
# -p:保留原文件的修改时间,访问时间和访问权限。
# -q: 不显示传输进度条。
# -r: 递归复制整个目录。
# -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
# -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
# -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
# -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
# -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
# -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
# -P port:注意是大写的P, port是指定数据传输用到的端口号
# -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
SSH密钥
密钥生成
ssh-keygen
创建一个 SSH key
# 创建一个SSH登陆密钥, 一直回车可以生成一个无密码登陆的密钥
ssh-keygen -t dsa
# -t 指定密钥类型,默认是 rsa ,可以省略。
# -C 设置注释文字,比如邮箱。
# -f 指定密钥文件存储文件名。
密钥传递
ssh-copy-id
将密钥复制到远程电脑实现无密码登陆
# 从/root/.ssh下复制密钥到远程电脑
ssh-copy-id root@192.168.xxx.xxx
# 复制指定密钥文件到远程电脑
ssh-copy-id -i /xxx/xxx/xxx.pub root@192.168.xxx.xxx
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Salted Fish
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果