2

私のシェルスクリプトのスキルはl337よりやや低いので、これについては助けが必要です:(

いくつかのファイルをgzipで圧縮してから、新しいファイルを別の場所から上にコピーする必要があります。このスクリプトは、他のスクリプトから次のように呼び出すことができる必要があります。

exec script.sh $oldfile $newfile

誰かが私を正しい方向に向けることができますか?

編集:詳細を追加するには:

このスクリプトは、フォルダにアップロードされた一部のドキュメントの毎月の更新に使用されます。古いドキュメントを1つの圧縮ファイルにアーカイブし、新しいドキュメント(名前が異なる場合があります)を古いドキュメントの上にコピーする必要があります。スクリプトは、別のスクリプトからドキュメントごとに呼び出す必要があります。このスクリプトの基本的なフローは次のようになります-

  1. スクリプトファイルは、指定された名前(スクリプト内のプレフィックス定数と現在の月と年(prefix.september.2009.tar.gzなど)から作成)で新しいgzipアーカイブを作成する必要があります。それ以外の場合は、に追加します。既存のもの。
  2. 古いファイルをアーカイブにコピーします。
  3. 古いファイルを新しいファイルに置き換えます。

よろしくお願いします、
リチャード

編集:アーカイブファイル名にモードの詳細を追加

4

3 に答える 3

2

bashスクリプティングの参考になるのは、AdvancedBash-ScriptingGuideです。

このガイドでは、bashスクリプトのすべてについて説明します。

私が取る基本的なアプローチは次のとおりです。

Move the files you want to zip to a directory your create.
   (commands mv and mkdir)

zip the directory. (command gzip, I assume)

Copy the new files to the desired location (command cp)

私の経験では、bashスクリプトは主にこれらのコマンドの使い方をよく知っており、コマンドラインで実行できる場合はスクリプトで実行できます。

役に立つかもしれない別のコマンドは

pwd - this returns the current directory
于 2009-09-02T15:01:51.190 に答える
2

これがあなたの説明に基づいて修正されたスクリプトです。tarで圧縮されたアーカイブを使用gzipして、複数のファイルを1つのアーカイブに保存しました(単独で複数のファイルを保存することはできませんgzip)。このコードは表面的にのみテストされています。おそらく1つか2つのバグがあります。怒りで使用している場合は、コマンドの成功などを確認するためにさらにコードを追加する必要があります。しかし、それはあなたをそこへの道のほとんどに連れて行くはずです。

#!/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必要に応じて、別のスクリプトからこのスクリプトを呼び出すこともできます。この行を2番目のスクリプトに入れるだけです。

exec ./script.sh $1 $2
于 2009-09-02T15:21:21.263 に答える
0

バージョン管理を使用してみませんか?それははるかに簡単です。チェックアウトして圧縮するだけです。

(オプションでない場合はお詫びします)

于 2009-09-02T16:40:52.663 に答える