xshell拷贝文件 cp与scp命令用法
Xshell6是一个强大的安全终端模拟软件。 Xshell6支持SSH1,SSH2和TELNET 协议。用户可以通过家里的网络连接远程主机,方便用户在家处理突发事情,可以让用户轻松管理远程主机。 Xshell6还可以上传下载文件,非常方便。
详解Xshell环境下cp与scp的区别:cp在Linux服务器内建立副本,scp实现Windows与远程主机间的文件安全传输。包含PowerShell客户端配置、端口参数设置及SHA256完整性校验步骤。
在 Xshell 的 SSH 终端中运行 cp,复制的是当前服务器上的文件;要让文件经过 SSH 到另一台电脑,需要使用 scp 等传输工具。下面用 Windows 上的 Xshell 连接 Ubuntu 服务器,先备份同一个 report.txt,再在 Windows PowerShell 中下载、回传并核对文件。命令中的账号、主机和路径都要换成自己的实际值。

Xshell 远程终端中确认当前用户、主机名及源文件路径
1. 确认命令在哪台电脑执行
先用 Xshell 打开已获授权的 SSH 会话。本例服务器账号写作 ops,准备复制的文件位于 /home/ops/copy-demo/report.txt。这个文件需要事先存在,并且当前账号具有读取权限;目标目录还需要有写入权限。
在 Xshell 已登录的服务器终端中分别执行:
whoami
hostname
pwd
ls -l /home/ops/copy-demo/report.txt
根据实际输出核对登录账号、服务器和源文件。若找不到文件,先改正路径,不继续照抄后面的复制命令。此时终端中的 /home/ops 是服务器目录,Windows 的下载文件夹并不在这里。
本例后面的 server.example 只是主机名占位符,必须替换成服务器真实地址。端口用 22 示范,实际 SSH 使用其他端口时相应修改。

1. 确认命令在哪台电脑执行
2. 用 cp 在服务器内建立副本
仍在 Xshell 的远程终端中操作,先准备备份目录,再复制文件:
mkdir -p /home/ops/copy-demo/backup
cp -i /home/ops/copy-demo/report.txt /home/ops/copy-demo/backup/report.txt
cp 后面先写源文件,再写目标。-i 表示目标普通文件已经存在时先询问是否覆盖;不确定是不是需要替换的副本时,不确认覆盖,先查看目标内容。
检查源文件和备份文件:
ls -l /home/ops/copy-demo/report.txt /home/ops/copy-demo/backup/report.txt
sha256sum /home/ops/copy-demo/report.txt /home/ops/copy-demo/backup/report.txt
比较两个文件实际输出的 SHA-256 值是否一致,同时核对目标路径。cp 成功时可以没有普通输出,因此不要只凭终端没有弹消息就判断结果。
要复制普通目录及其内容,GNU cp 可以使用 -R 递归复制,但目录名、已存在的目标目录会影响落点。先用本例的单文件流程确认方向,再处理自己的目录,不把整段系统路径当作练习对象。

在服务器端使用 cp -i 创建备份并通过 sha256sum 校验一致性
3. 在 Windows 本机准备 scp 客户端
要把文件下载到自己的电脑,另外打开 Windows PowerShell,保持 Xshell 远程会话用于后面的服务器检查。在本机 PowerShell 中执行:
Get-Command scp
这一步检查 Windows 是否能找到 scp 命令。找不到时,先按 Windows 的 OpenSSH 客户端安装流程添加客户端组件,再重新打开 PowerShell;本次收发文件不需要为了这个目的在自己的电脑上启用 SSH 服务器。
下例使用当前 Windows 用户默认的下载文件夹:
Set-Location "$env:USERPROFILE\Downloads"
如果下载文件夹被移动到其他位置,换成实际路径。确认 PowerShell 当前目录是准备接收文件的位置,并检查没有同名的 report-from-server.txt;已有同名文件时,先为这次下载选一个新的目标名称。
4. 用 scp 从服务器下载同一个文件
在 Windows 本机 PowerShell 中执行,而不是粘贴到 Xshell 的远程终端:
scp -P 22 ops@server.example:/home/ops/copy-demo/report.txt .\report-from-server.txt
命令左边是服务器文件,右边的 .\report-from-server.txt 是 Windows 当前目录中的目标文件。文件传输的“本地”始终指运行 scp 的那台电脑;如果在远程 Linux 终端执行,它的本地就成了服务器,不能用同一条理解去找 Windows 文件。
-P 是大写,用于指定 SSH 端口;小写 -p 用于保留时间和文件模式信息,不是端口参数。按实际认证方式输入密码或使用已配置的密钥,首次连接时先通过可信渠道核对服务器主机指纹。
传输结束后,在同一个 PowerShell 窗口中核对文件:
Get-Item .\report-from-server.txt
Get-FileHash .\report-from-server.txt -Algorithm SHA256
把实际哈希值与第 2 步服务器源文件的 SHA-256 比较,字母大小写不影响同一哈希值的判断。列表中有文件、大小合理且哈希一致,才完成这一轮下载核查。

在 Windows PowerShell 中使用 scp 命令从服务器下载文件
5. 回传为新文件,再到服务器核对
继续使用刚下载的这份文件,准备回传成服务器上的 report-return.txt。先在 Xshell 中检查目标目录有写入权限,并确认这个新名称没有占用;scp 不采用 cp -i 的交互覆盖选项,不能假定目标重名时一定会询问。
在 Windows PowerShell 中执行:
scp -P 22 .\report-from-server.txt ops@server.example:/home/ops/copy-demo/report-return.txt
这次源文件在 Windows 当前目录,目标是服务器路径。回到 Xshell 的远程终端,检查回传结果:
ls -l /home/ops/copy-demo/report-return.txt
sha256sum /home/ops/copy-demo/report.txt /home/ops/copy-demo/report-return.txt
比较实际输出,确认原文件和回传副本内容一致。目标目录不存在或没有写权限时,先处理正确目录与账号权限,不通过放开整个目录权限来迁就传输。
需要复制整份普通目录时,scp 使用 -r;使用前先核对源目录和目标目录的落点。本例没有删除任何源文件,原服务器文件、服务器备份及 Windows 下载副本都可以保留,后续按自己的文件管理规则整理。
如果命令报错,按错误所在阶段继续检查:连接超时先核对地址、端口和网络;认证失败核对授权账号与凭据;找不到文件或无法写入则检查对应一端的路径和权限。始终记清当前窗口属于 Windows 本机还是远程服务器,再判断文件应该出现在哪里。

回到 Xshell 终端核对回传文件与原文件的哈希值

































