Linux中复制文件(文件迁移操作)

发布于:2025-07-23 ⋅ 阅读:(15) ⋅ 点赞:(0)

目录

1️⃣CP命令(常用于本机操作)

2️⃣rcp命令(常用于远程操作)

3️⃣SCP命令(常用于安全远程操作)

4️⃣使用 rsync 命令


常用迁移文件操作如下:

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 的特点

  1. 增量同步:仅传输变化的文件部分,节省带宽和时间
  2. 保留属性:可以保持文件权限、时间戳等元数据
  3. 压缩传输:支持数据传输时压缩,减少网络负载
  4. 灵活排除:可以排除特定文件或目录
  5. 远程支持:通过 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服务),可以使用curlwget

使用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也都是可以实现的。至此就可以进行文件移动操作了


网站公告

今日签到

点亮在社区的每一天
去签到