gpt4 book ai didi

用于归档文件然后复制新文件的 Bash 脚本

转载 作者:行者123 更新时间:2023-11-29 09:49:38 26 4
gpt4 key购买 nike

需要一些帮助,因为我的 shell 脚本技能比 l337 稍差 :(

我需要对几个文件进行 gzip 压缩,然后从另一个位置复制较新的文件。我需要能够从其他脚本中以下列方式调用此脚本。

exec script.sh $oldfile $newfile

谁能指出我正确的方向?

编辑:添加更多细节:

此脚本将用于上传到文件夹的一些文件的每月更新,旧文件需要归档到一个压缩文件中,新文件可能有不同的名称,复制在旧文件之上。该脚本需要从另一个脚本按文档大小写在文档上调用。这个脚本的基本流程应该是 -

  1. 脚本文件应该创建一个新的 gzip具有指定名称的存档(从脚本中的前缀常量和当前月份和年份创建,例如 prefix.september.2009.tar.gz)仅当它尚不存在,否则添加到现有的。
  2. 将旧文件复制到存档中。
  3. 用新文件替换旧文件。

提前致谢,
理查德

编辑:在存档文件名上添加了模式详细信息

最佳答案

这是根据您的说明修改后的脚本。我使用 tar 存档,用 gzip 压缩,将多个文件存储在一个存档中(你不能使用 gzip 存储多个文件> 单独)。此代码仅经过表面测试 - 它可能有一两个错误,如果您在愤怒中使用它,您应该添加更多代码以检查命令是否成功等。但它应该可以帮助您完成大部分工作。

#!/bin/bash

oldfile=$1
newfile=$2

month=`date +%B`
year=`date +%Y`

prefix="frozenskys"

archivefile=$prefix.$month.$year.tar

# Check for existence of a compressed archive matching the naming convention
if [ -e $archivefile.gz ]
then
echo "Archive file $archivefile already exists..."
echo "Adding file '$oldfile' to existing tar archive..."

# Uncompress the archive, because you can't add a file to a
# compressed archive
gunzip $archivefile.gz

# Add the file to the archive
tar --append --file=$archivefile $oldfile

# Recompress the archive
gzip $archivefile

# No existing archive - create a new one and add the file
else
echo "Creating new archive file '$archivefile'..."
tar --create --file=$archivefile $oldfile
gzip $archivefile
fi

# Update the files outside the archive
mv $newfile $oldfile

将其保存为script.sh,然后使其可执行:

chmod +x script.sh

然后像这样运行:

./script.sh oldfile newfile

将创建类似 frozenskys.September.2009.tar.gz 的文件,newfile 将替换 oldfile。如果需要,您还可以从另一个脚本中使用 exec 调用此脚本。只需将这一行放在您的第二个脚本中:

exec ./script.sh $1 $2

关于用于归档文件然后复制新文件的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1368186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com