Linux uucp命令是UUCP(Unix-to-Unix Copy)工具集的核心命令,用于在Unix系统之间复制文件和目录。
uucp [选项] 源文件... 目标文件
| 选项 | 说明 |
|---|---|
-c |
不将源文件复制到spool目录,直接使用源文件(默认) |
-C |
强制将源文件复制到spool目录 |
-d |
创建所有必要的目录(默认) |
-f |
不创建中间目录 |
-m |
传输完成后发送邮件通知 |
-n 用户 |
通知远程主机上的指定用户 |
-r |
仅排队作业,不启动传输守护进程 |
-j |
显示作业ID |
-g 等级 |
设置作业优先级(A-Z,A最高) |
-x 级别 |
设置调试级别(1-9) |
--help |
显示帮助信息 |
uucp使用以下格式指定源和目标:
系统!路径
系统!~用户/路径
系统!~user
~user/路径
其中:
系统:远程系统名(在UUCP配置中定义)~用户:用户的公共目录(通常是/var/spool/uucppublic/用户名)路径:文件或目录的路径# 将本地文件复制到远程系统
uucp document.txt remotehost!~/receive/
# 将本地文件复制到远程系统的绝对路径(需要权限)
uucp report.pdf remotehost!/tmp/report.pdf
# 从远程系统复制文件到本地
uucp remotehost!~/send/data.txt ~/downloads/
# 复制到远程用户的公共目录
uucp file.txt remotehost!~alice/
# 从远程用户目录复制文件
uucp remotehost!~bob/file.txt .
# 复制到本地用户的公共目录(~user扩展)
uucp data.csv ~charlie/
# 传输完成后发送邮件通知
uucp -m important.doc remotehost!~/incoming/
# 通知远程系统上的特定用户
uucp -n alice backup.tar remotehost!~/backups/
# 设置高优先级传输
uucp -g A urgent.log remotehost!~/logs/
# 设置低优先级传输
uucp -g Z large_archive.iso remotehost!~/iso/
# 将作业加入队列,但不立即启动传输
uucp -r file.txt remotehost!~/queue_test/
# 稍后可以使用uucico手动启动传输
# 显示作业ID以便后续跟踪
uucp -j backup.db remotehost!~/database/
# 输出可能包含:
# jobid remotehostNf3s2
#!/bin/bash
# 使用uucp进行每日备份传输
BACKUP_FILE="/backups/$(date +%Y%m%d).tar.gz"
REMOTE_SYSTEM="backupserver"
REMOTE_USER="backupuser"
# 创建备份
tar -czf "$BACKUP_FILE" /important/data/
# 传输备份文件
if uucp -m -g B "$BACKUP_FILE" "$REMOTE_SYSTEM!~$REMOTE_USER/"; then
echo "备份传输已排队: $BACKUP_FILE"
# 清理7天前的本地备份
find /backups -name "*.tar.gz" -mtime +7 -delete
else
echo "备份传输失败"
fi
# 使用调试模式查看详细过程
uucp -x 5 testfile.txt remotehost!~/test/
# 调试级别1-9,数字越大越详细
| 路径格式 | 实际路径 | 说明 |
|---|---|---|
~ |
/var/spool/uucppublic | UUCP公共目录 |
~user |
/var/spool/uucppublic/user | 用户的公共目录 |
系统!路径 |
远程系统上的绝对路径 | 需要相应权限 |
系统!~user/路径 |
远程系统上的用户公共目录 | 常用方式,权限较宽松 |
# 查看所有UUCP作业状态
uustat -a
# 查看特定作业状态(使用-u指定用户)
uustat -u username
# 查看队列中的作业
uustat -q
# 取消作业
uustat -k 作业ID
# 重新启动失败的作业
uustat -r 作业ID
# 删除所有作业
uustat -K
# 列出已知的UUCP系统
uuname
# 测试与远程系统的连接
uucico -s 系统名 -x 5
uucp命令依赖于以下配置文件(通常在/etc/uucp/目录下):
| 文件 | 用途 |
|---|---|
sys |
定义远程系统连接参数 |
port |
定义物理端口(如串口、TCP) |
dial |
定义拨号器 |
dialcode |
拨号代码定义 |
config |
全局配置 |
Permissions |
访问权限控制 |
# /etc/uucp/sys 示例
system remotesys
time any
phone 555-1234
port serial1
speed 115200
chat login: mylogin ssword: mypassword
chat-timeout 45
# Ubuntu/Debian系统
sudo apt-get update
sudo apt-get install uucp
# CentOS/RHEL系统
sudo yum install uucp
# 启动UUCP服务
sudo systemctl start uucp
sudo systemctl enable uucp
# 检查服务状态
systemctl status uucp
可能原因: UUCP未安装
解决: 安装uucp软件包
sudo apt-get install uucp
可能原因: 系统未配置或连接问题
解决: 检查配置和连接状态
# 检查系统配置
uuname
# 查看传输日志
tail -f /var/log/uucp/DEBUG
解决: 检查Permissions文件
# 检查/etc/uucp/Permissions
# 确保有适当的读写权限
解决: 手动启动传输或检查连接
# 手动启动uucico
uucico -s 远程系统名 -x 5
# 或检查队列状态
uustat -a
对于现代文件传输需求,推荐使用以下工具:
# 复制文件到远程系统
scp file.txt user@remotehost:/path/to/destination/
# 从远程系统复制文件
scp user@remotehost:/path/to/file.txt .
# 递归复制目录
scp -r directory/ user@remotehost:/path/
uuto - 发送文件到远程用户目录uupick - 接收uuto发送的文件uustat - 查看UUCP状态和队列uux - 在远程系统执行命令uucico - UUCP通信守护进程uuname - 列出已知的UUCP系统