目录
常用迁移文件操作如下:
1️⃣CP命令(常用于本机操作)
cp
是 Linux 中最基本的文件复制命令,语法:cp [选项] 源文件 目标文件
选项说明:
-r
或-R
:递归复制目录及其内容(用于复制目录)。-i
:交互模式,覆盖前提示用户确认。-v
:显示详细的复制过程(verbose)。-f
:强制复制,覆盖目标文件而不提示。-p
:保留文件的原始属性(如权限、时间戳等)。-a
:归档模式,等同于-dpR
,保留所有文件属性和递归复制目录。-u
:仅当源文件比目标文件新时才复制(更新模式)。-l
:创建硬链接而不是复制文件。-s
:创建符号链接(软链接)而不是复制文件。
# 将 file1.txt 复制为 file2.txt
cp file1.txt file2.txt
# 将 file1.txt 复制到指定目录
cp file1.txt /home/user/documents/
2️⃣rcp命令(常用于远程操作)
rcp用在远端复制文件或目录到本地。语法:rcp [-pr][源文件或目录][目标文件或目录]
或 rcp [-pr][源文件或目录...][目标文件]
选项说明:
-r
:递归处理,将指定目录下的文件与子目录一并处理(用于复制目录)。-p :保留源文件或目录的属性,包括拥有者,所属群组,权限与时间。
#复制远程文件到本地
rcp root@192.168.8.88:./test.txt test.txt
3️⃣SCP命令(常用于安全远程操作)
scp 是加密的,更加安全的操作,rcp 是不加密的,scp 是 rcp 的升级加强版。
语法:scp [选项] [源文件] [目标路径]
常用选项说明:
-r
:递归复制整个目录。-P
:指定远程主机的 SSH 端口号(默认是 22)。-p
:保留文件的修改时间、访问时间和权限。-v
:显示详细的调试信息,有助于排查问题。-C
:启用压缩,可以加快传输速度。
例如:本机文件上传到远程机器
scp [选项] 本地文件路径 用户名@远程主机地址:远程目录路径
scp /path/to/local/file.txt user@remotehost:/path/to/remote/directory/
反之远程机器文件到本机
scp [选项] 用户名@远程主机地址:远程目录路径 本地文件路径
scp user@remotehost:/path/to/remote/directory/file.txt /path/to/local/
如果是到当前目录可以是
scp user@remotehost:/path/to/remote/directory/file.txt .
这个命令中:
user@remotehost:/path/to/remote/directory/file.txt
是远程主机上的文件路径。.
表示当前目录。
4️⃣使用 rsync 命令
是 Linux 系统中一个功能强大的文件同步工具,它能够高效地在本地或远程系统之间同步文件和目录。语法:rsync [选项] 源文件 目标文件
rsync 的特点
- 增量同步:仅传输变化的文件部分,节省带宽和时间
- 保留属性:可以保持文件权限、时间戳等元数据
- 压缩传输:支持数据传输时压缩,减少网络负载
- 灵活排除:可以排除特定文件或目录
- 远程支持:通过 SSH 安全地同步远程服务器文件
还可以支持机器之间实时同步文件
两个Ubuntu机器,设置共享目录实时同步_ubuntu 网络即时同步两个服务器的文件-CSDN博客文章浏览阅读501次,点赞4次,收藏3次。inotify-tools:一个文件系统事件监控机制,允许你监视文件系统的变化,如创建、删除、修改等。rsync:一个快速且灵活的文件复制工具,它可以同步两个目录之间的文件差异,只复制变化的文件部分。若是脚本有格式问题,则安装dos2unix 将脚本转换为 Unix 格式。2>&1 表示将命令的标准错误输出重定向到标准输出1中一起输出。"2>"表示将命令的`标准错误`输出重定向到指定的文件中。">"符号用于将命令的`标准输出`重定向到指定的文件中。机器A、B需要都安装这个两个工具。_ubuntu 网络即时同步两个服务器的文件
https://blog.csdn.net/qq_43544074/article/details/148231268两个Ubuntu机器,设置共享目录实时同步_ubuntu 网络即时同步两个服务器的文件-CSDN博客
常用选项说明:
- -a(archive): 以归档模式传输文件,保持文件属性,保留符号链接、权限、时间戳等。
- -v(verbose): 显示详细的传输信息。
- -r(recursive): 递归传输文件夹及其子文件夹。
- -z(compress): 在传输过程中压缩文件,减少数据量。
- --delete: 删除目标路径中源路径不存在的文件。
- --exclude: 排除特定的文件或文件夹,不进行同步。
- --progress: 显示传输进度信息。
- -e: 指定远程shell连接命令,如SSH。
rsync -avz -e ssh /home/data/docker_data/db_data/ root@192.168.8.88:/home/software/docker_servers_data/db_data/
rsync -P -avz -e ssh /home/data/docker_data/db_data/ root@192.168.8.88:/home/software/docker_servers_data/db_data/
以下是使用rsync进行断点续传的一些示例:
从本地上传文件到服务器
rsync -P -t -r -v -e [待传输文件] usr@IP:[接收目录]
从服务器下载文件到本地
rsync -P -t -r -v -e usr@IP:[待传输文件] [接收目录]
本地文件夹同步
rsync -av /path/to/source /path/to/destination
远程主机同步
rsync -azv -e ssh /path/to/source remote_host:/path/to/destination
删除目标多余文件
rsync -av --delete /path/to/source /path/to/destination
排除特定文件和目录
rsync -av --exclude='logs' --exclude='temp' /path/to/source /path/to/destination
注意事项:在使用rsync进行断点续传时,需要注意以下几点:
确保两台机器的时间同步,以避免因时间差异导致文件传输错误。
使用-P参数,它是--partial和--progress的组合,可以在显示传输进度的同时支持断点续传。
传输过程中,rsync会在目标目录下生成一个临时文件,可以通过ls -a命令查看。这个临时文件在下次传输时会被用来继续传输,从而实现断点续传。
其他方法:使用CURL或WGET(适用于HTTP/HTTPS操作)
需要通过HTTP或HTTPS协议上传文件到服务器(例如,使用某些Web服务),可以使用curl
或wget
。
使用CURL上传文件:
curl -X POST -F "file=@/path/to/local/file.txt" http://remotehost/upload.php
#或者,如果服务器支持HTTP PUT方法:
curl -T /path/to/local/file.txt http://remotehost/upload.php
使用WGET上传文件(通常用于下载,但可以模拟上传):
wget --method=PUT --body-file=/path/to/local/file.txt http://remotehost/upload.php
还有FTP或者SFTP也都是可以实现的。至此就可以进行文件移动操作了