简短的 tar 脚本:尝试将今天的日期添加到压缩文件名时出现“找不到命令”

Posted

技术标签:

【中文标题】简短的 tar 脚本:尝试将今天的日期添加到压缩文件名时出现“找不到命令”【英文标题】:Short tar script: 'command not found' when trying to add today's date to a compressed file name 【发布时间】:2018-12-29 04:28:34 【问题描述】:

我正在尝试创建一个执行以下操作的脚本:

    如果 /home/testuser/backup 不存在,则将其创建为目录(如果存在则不会显示错误消息) 获取当前日期并将其存储为变量 使用焦油: 备份整个项目文件目录 备份被压缩,gzip 格式,存档格式 使用存储的变量在 tar 文件名中包含日期 备份到 /home/testuser/backup 目录 创建一个名为 testuser.log 的日志文件,其中包含 tar 命令生成的所有消息(使用详细模式) 将日志文件保存在 /home/testuser/backup/testuser.log 中

我在使用命令语法时遇到问题,我不太明白我做错了什么。

cd /home/testuser

mkdir -p /home/testuser/backup

today=$(date'+%d-%m-%y')

tar -zcvf testuserbackup-$today.tar.gz projectfiles && 
testuserbackup-$today.tar.gz /home/testuser/backup

testuserbackup-$today.tar.gz >> testuser.log 2>/dev/null

mv testuser.log /home/testuser/backup

当我尝试运行脚本时,我得到以下终端输出:

./script2.sh: line 6: date+%d-%m-%y: command not found
projectfiles/
projectfiles/budget/
projectfiles/budget/testuserbudget1.txt
projectfiles/budget/testuserbudget2.txt
projectfiles/old/
projectfiles/old/testuserold2.txt
projectfiles/old/testuserold1.txt
projectfiles/documents/
projectfiles/documents/testuserdoc2.txt
projectfiles/documents/testuserdoc1.txt
./script2.sh: line 7: testuserbackup-.tar.gz: command not found

我愿意接受任何建议。这个任务来自上学期的一个旧作业,我正在重新审视它...... 根据我以前的作业笔记,这项任务应该能够在不超过 4 行代码中完成。

**编辑:**完成的脚本(在 John 的协助下)

#!/bin/bash
mkdir -p /home/testuser/backup
today=$(date '+%d-%m-%y')
tar -zcvf backup/testuserbackup-"$today".tar.gz projectfiles > 
backup/testuser.log 2>&1

【问题讨论】:

【参考方案1】:

你少了一个空格:

today=$(date '+%d-%m-%y')
#           ^

另外,这些行应该全部合并:

tar -zcvf testuserbackup-$today.tar.gz projectfiles && 
testuserbackup-$today.tar.gz /home/testuser/backup

testuserbackup-$today.tar.gz >> testuser.log 2>/dev/null

mv testuser.log /home/testuser/backup

日志文件需要与tar 命令在同一行中创建,并且可以通过写出它们的完整路径来使 tarball 和日志文件显示在正确的位置。这样就无需稍后再移动它们。

tar -zcvf backup/testuserbackup-"$today".tar.gz projectfiles > backup/testuser.log 2>&1

捕获 stderr 和 stdout 是个好主意,所以我将 2>/dev/null 更改为 2>&1

【讨论】:

以上是关于简短的 tar 脚本:尝试将今天的日期添加到压缩文件名时出现“找不到命令”的主要内容,如果未能解决你的问题,请参考以下文章

shell制作自解压文件tar

shell制作自解压文件tar

shell脚本----周期压缩备份日志文件

Linux之tar命令

shell脚本将指定目录下前3天日期目录使用tar打包后并将其删除源日期目录

linux文将于目录的压缩和解压缩命令:gzip压缩文件