SFTP 传输脚本的变量

SFTP 传输脚本的变量

我正在尝试执行以下操作:

  • 导出数据库(可能将其制作成 .tgz 文件,这很简单)
  • 将整棵树打包成 .tgz 文件
  • 将两个文件复制到不同服务器上的命名目录中。

使用我目前拥有的脚本 (bash) 完成所有这些操作。但由于我希望实现自动化,因此我需要更多的自动化。

目前我

  • 创建一个包含今天日期的目录
  • mysqldump 将数据库转储到名称包含该日期的文件中
  • 创建目录树的 .tgz 文件,同样使用包含今天日期的名称
  • 通过 sftp 连接到服务器(或 scp,无所谓...它是一个 windows (s)ftp(s) 服务器)
  • 将(当前静态的)文件上传到(当前静态的)目录中
  • 退出 sftp 服务器并输出上传状态。

在连接到 sftp 服务器之前,我是否将两个文件名转换为变量,以便我可以说“put $filename1”等等?

答案1

在任何 POSIX shell(包括bash)中,你都可以使用如下命令

# Today's date
today=$(date +'%Y-%m-%d')

# Create directory
mkdir "$today"

# Dump SQL backup
mysqldump … > "$today/sqlbackup.$today.sql"

# Make a tarball
tar cf "$today.tgz" "$today"

# Transfer file
scp -p "$today.tgz" remoteHost:

# Get a status report from the immediately preceding command
echo "Status is $? (0=good)"

相关内容