Skip to content
鼓励作者:欢迎打赏犒劳

本地文件上传到服务器脚本

scp 命令上传

DANGER

将此脚本保存到文件(比如 upload_folder.sh),然后给予执行权限: chmod +x upload_folder.sh

如果你还没有配置 SSH 免密码登录(通过 SSH 密钥,而非密码),脚本在执行时会提示你输入服务器的用户密码。

安全提示:为了安全起见,请确保你通过 SSH 密钥认证来进行连接,而不是使用密码。通过 ssh-copy-id 命令可以轻松地安装你的公钥到远程服务器的 authorized_keys 文件中(如果你还没有生成过 SSH 密钥,可以通过 ssh-keygen 命令来生成)。这样做的好处是增加了安全性,同时在执行脚本时避免了手动输入密码。

shell
#!/bin/bash

LOCAL_DIR="/path/to/local/folder"      # 本地文件夹的路径
REMOTE_USER="user"                     # 远程服务器的用户名
REMOTE_HOST="hostname"                 # 服务器的地址或域名
REMOTE_DIR="/path/to/remote/directory" # 服务器上的目标文件夹路径

# 注意:REMOTE_USER、REMOTE_HOST 和 REMOTE_DIR 需要替换成你自己的信息
# 注意:LOCAL_DIR 也需要替换成你需要上传的本地文件夹路径

# 将本地文件夹内容复制到远程服务器目录
scp -r "$LOCAL_DIR" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"

# 如果你需要使用特定端口,可以添加 -P 参数
# scp -r -P PORT "$LOCAL_DIR" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"

# 完成上传
echo "Upload completed!"

rsync 命令上传

使用 rsync 的好处在于它只会同步变化的部分,这对于频繁更新的文件夹来说特别有效,它也提供了许多强大的选项,比如压缩、排除特定文件等。

shell
#!/bin/bash

LOCAL_DIR="/path/to/local/folder/"      # 本地文件夹的路径,末尾的斜杠表示同步文件夹内容
REMOTE_USER="user"                      # 远程服务器的用户名
REMOTE_HOST="hostname"                  # 服务器的地址或域名
REMOTE_DIR="/path/to/remote/directory/" # 服务器上的目标文件夹路径,末尾的斜杠表示同步到这个文件夹内

# 注意:REMOTE_USER、REMOTE_HOST 和 REMOTE_DIR 需要替换成你自己的信息
# 注意:LOCAL_DIR 也需要替换成你需要上传的本地文件夹路径

# 使用 rsync 命令复制文件夹
rsync -avz --progress "$LOCAL_DIR" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"

# 如果你需要使用特定端口,可以添加 -e "ssh -p PORT" 参数
# rsync -avz -e "ssh -p PORT" --progress "$LOCAL_DIR" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"

# 完成上传
echo "Upload completed!"

NOTE

脚本里的 rsync 参数说明:

-a:归档模式,它等同于 -rlptgoD,用于保留文件的权限、时间戳、软硬链接等信息。

-v:冗余模式,可以在输出中看到详细的同步信息。

-z:压缩数据,在传输时压缩文件。

--progress:显示进度条,让用户知道传输状态。

将此脚本保存到文件(比如 rsync_upload.sh),然后给予执行权限:

如果你的 SSH 连接需要使用端口号,只需要取消注释并替换示例脚本中的端口号 PORT 即可。

如有转载或 CV 的请标注本站原文地址