Linux shell 脚本 : make a folder with the current date name

标签 linux bash shell

我正在尝试制作一个简单的备份脚本,但在创建名称为当前日期的文件夹时遇到问题

我的脚本就是这样,基本上问题在最后一行

drivers=$(ls /media/)

declare -i c=0
for word in $drivers
do
    echo "($c)$word"
    c=c+1
done

read -n 1 drive
echo

c=0
for word in $drivers
do
    if [ $c -eq $drive ]
    then
        backuppath="/media/$word/backup"
    fi
    c=c+1
done


echo "doing back up to $backuppath"

cp -r /home/stefanos/Programming $backuppath/$(date +%Y-%m-%d-%T)

输出:

(0)0362-BA96
(1)Data
(2)Windows
0
doing back up to /media/0362-BA96/backup
cp: cannot create directory `/media/0362-BA96/backup/2012-12-05-21:58:37': Invalid argument

三次检查路径是否存在,直到/media/0362-BA96/

已解决: janisz 说的最终脚本看起来像吗

drivers=$(ls /media/)

declare -i c=0
for word in $drivers
do
    echo "($c)$word"
    c=c+1
done

read -n 1 drive
echo

c=0
for word in $drivers
do
    if [ $c -eq $drive ]
    then
        backuppath="/media/$word/backup"
    fi
    c=c+1
done
echo "doing back up to $backuppath"

backup(){
  time_stamp=$(date +%Y_%m_%d_%H_%M_%S)
  mkdir -p "${backuppath}/${time_stamp}$1"
  cp -r "${1}" "${backuppath}/${time_stamp}$1"

  echo "backup complete in $1"
}

#####################The paths to backup####################

backup "/home/stefanos/Programming"
backup "/home/stefanos/Android/Projects"
backup "/home/stefanos/Dropbox"

最佳答案

尝试将其更改为:

time_stamp=$(date +%Y-%m-%d-%T)
mkdir -p "${backuppath}/${time_stamp}"
cp -r /home/stefanos/Programming "${backuppath}/${time_stamp}"

关于Linux shell 脚本 : make a folder with the current date name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13731463/

相关文章:

java - 在 Linux 上开始使用 JMX 身份验证时无法连接到 JMX

c - POSIX 部分写入()

linux - bash脚本测试字符串上多个参数的条件

linux - shell 脚本 :How to pass script's command-line arguments through to commands that it invokes?

c++ - 创建自定义语音命令 (GNU/Linux)

linux - 无法在 Vagrant 上使用版本 2 docker-compose 文件

linux - screen执行 "long term"命令并获取日志

linux - 如何编写脚本来执行git pull?

linux - 用变量替换 Bash 命令

php - 在 Linux 中的 PHP 脚本中终止所有相关进程