• 締切済み

シェルについてご教授ください

こんばんは。 度々すみません、 RedhatLinuxにてbashを使用しシェルを作成する 必要があります。 仕様としては、先ず既存ファイルをtarで圧縮し保管します。 但しファイル名には日付をつけ、「7日以上経過したファイル」 は不要とし削除したいのです。 あつかましくも、サンプルを掲載していただく事は可能でしょうか?。 初学者ですが、期日が明日朝までのため・・。 今回を機に勉強したいと思いますw。 よろしくお願いします。

みんなの回答

  • ese_ee
  • ベストアンサー率48% (68/139)
回答No.2

>期日が明日朝までのため ってもう間に合わないか。まあ、サンプルとしては、 tar cvzf hoge`date +%Y%m%d`.tgz ./targetfolder find . -name '*.tgz' -mtime +6 -exec rm '{}' ';' まあ、意味を理解して、よく検証の上、実装してください。 ご健闘を。

super_bree
質問者

お礼

有難うございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「今回を機に」って, 本当に勉強する気あるの? もしあるんだったら, 「何をどこまで調べた」のか見せて. あと, 仕様も不明瞭な点が多いのでもっと明確にしてください. 例えば ・「既存ファイル」はどこにあるのか ・どこに, どのような名前で保管するのか ・「ファイル名には日付をつけ」というが, 「日付をつけ」るのはどのファイルなのか ・「7日以上経過したファイル」というのは「アーカイブしたファイル」のことか くらいはかけるよね.

super_bree
質問者

お礼

上記でご理解頂けないようでしたら 特に回答など結構です。

関連するQ&A

  • Kシェル 圧縮方法について

    Kシェル 圧縮方法について /backup/db/dmpというディレクトリーがあります。 (dmp配下には色々ファイルが置かれています) このdmpディレクトリーを圧縮して その一つ上のdb配下に圧縮ファイルをおきたいです。 どうすれば圧縮できますか? 圧縮ファイル名は、 dsn333_yyyymmdd_tar.Zとしたいです。 (yyyymmddは、今の日付を入れたいです。(可変です))

  • Kシェルに関する質問です!

    Kシェルに関する質問です! あるディレクトリーに ファイルをFTP送信したいです。 送信するファイルは、日々作成される 圧縮ファイル(例.20100715_kkk.tar.Z)です。 しかし、ディレクトリーに格納できるのは、 容量の関係上、最新の圧縮ファイル5つまでです。 5つ以上になるとFTP送信するまえに 一番古い(圧縮ファイルの名前の日付で判断??作成日時で判断??)圧縮ファイルを削除して それからFTP送信をします。 こうすることで常に最新の5つをキープできます!! どのようなシェルを作ればいいですか? 削除の判断と実際の削除をどうすればいいのか 詳しく教えてください。

  • シェルスクリプトの自動化で動作が変なのですが・・・

    いつも大変お世話になります。 シェルスクリプトでtarコマンドを書き、このファイルをcrontabで自動化しております。 設定した時間になるとcrontabが実行され、ファイルが生成されるのですが、ファイル容量が少なく、tarコマンドがきちんと実行されていない様なのです。 あるディレクトリをまるごと圧縮しているのですが、容量は1GB程あり、これを tar czvf /directory_name1/file_name1.tar.gz /directory_name2/ というコマンドで圧縮しております。 直接このコマンドを実行するとちゃんと圧縮され、約940MBの容量になります。しかし、crontabでシェルスクリプトを実行すると45バイトのファイルが生成されて終ってしまいます。 なぜなのか、さっぱり原因が分かりません。 どなたかご教授の程、何卒、宜しくお願い致します。

  • cronから起動したシェルスクリプト内のtarが作動しない

    シェルスクリプトの中で、フォルダを圧縮するため tar -cvzf ~ しています。このシェルをroot権限cronで毎日動かしたいのですが、試したところ、正常に圧縮されません。 名前だけは存在するのですが、ファイルサイズが20byteしかありません。 シェルスクリプトを手動で起動させた場合は正しく圧縮できます。圧縮されたファイルも1Gありました。 以前、どこかのMLにて同様の報告があり、root宛てのMailを確認するように、というアドバイスまでは乗っていたので、確認したところ、root宛てにメールが来ていませんでした。 対処方法をお教えください。

  • シェルスクリプトの記載方法

    linuxでシェルスクリプトを書いています サーバ上に「日付のついた*.bak」ファイルが毎日できています これを3日以上経過した*.bakファイルを消去したいので直接 コマンドラインから次のようにキーボードでたたくと正常に消去できます find /root -name '*.bak' -mtime '+3' -exec rm -f {} \; これをシェルスクリプト(sakujyo.bash)として次のように記載し /rootの中におきました ================(sakujyo.bash)===================== #!/bin/bash find /root -name '*.bak' -mtime '+3' -exec rm -f {} \; =================================================== そして # sakujyo.bash と打鍵すると 次のようにエラーとなります -bash: sakujyo.bash: command not found findのpathが通ってないのかとも考えられるのですが・・・ findコマンドは /usr/bin/ の中にあるので次のように記載してみました =================================================== #!/bin/bash cd /usr/bin find /root -name '*.bak' -mtime '+3' -exec rm -f {} \; ==================================================== このようにしても同じエラーとなります 記載方法等教えていただけませんか よろしくお願いします。

  • tar zcf  で Argument list too long のエラーが出る

    aaa下の中身を圧縮して test.tar.gz を作り、これを bbb下に移動させるのを 以下のようにshで行っています。 #!/bin/bash cd /aaa tar zcf test.tar.gz * mv test.tar.gz /bbb これを、なにか圧縮コマンドのオプションを使って 圧縮元と圧縮ファイル作成先を指定して、1行で済ますことは出来ますか? tar zcf /bbb/test.tar.gz /aaa/*   を試してみましたが、 -bash: /bin/tar: Argument list too long と出てしまいます。ご教授宜しく御願いいたします。

  • シェル(tcsh)が動かなくなりました。'nknown option: `-

    初めてシェル(tcsh)に挑戦して、いろいろ試していました。 tar で 元ファイル名+日付の圧縮ファイルを書くあたりまで成功したのですが、なんかのはずみで全く動かなくなり困っています。 とりあえず、余分なものを全てなくしたシンプルなファイルに変えてみました。 ↓↓aaaa.tcshコード↓↓ #! /bin/tcsh -f date ↑↑aaaa.tcshコード↑↑ [root@aaaa aaaa]# ls -l -rwxrwxrwx 1 aaaa aaaa 23 Dec 16 11:51 aaaa.tcsh* これを実行しても同じエラーとなります。 [root@aaaa aaaa]# ./aaaa.tcsh* 'nknown option: `- Usage: tcsh [ -bcdefilmnqstvVxX ] [ argument ... ]. 何が原因でしょうか?

  • tarにつて

    すいません。tarで圧縮されたfileが30個あるとします。それをシェルで一気に解凍しようと考えてますが ワイルドカードで指定してもtarでエラーがでます。 1個1個やれば問題ないのですが、tarで一気に解凍はむりでしょうか?

  • シェルスクリプトのバックアップ世代管理について

    シェルスクリプトで質問です。まだ勉強しはじめなのですが、条件がついた時のファイル削除がわかりません。 どなたか教えていただけると助かります。 やりたいことは以下です。 /home/hogeフォルダ内に以下のファイルがあります。 sample20150101 sample20150102 sample20150103 otherXX otherYY otherYYYYMMDD 他にも多数 この中からsampleファイルでファイル名の後ろについている日付が古いものを削除したいです。 ただし、更新日がファイル名の末尾にある日付とは限りません。 またsampleYYYYMMDDは末尾の日付が直近の3ファイル(3日分)は残したいです。 他のファイルには影響ないようにしたいとも考えてます。 ネットで調べて更新日で世代管理はなんとか出来たのですが、ファイル名で判定するやり方がわからず… こういった場合、どのようにスクリプトを書けばいいのでしょうか? まだ勉強しはじめたばかりなので知識がなくて申し訳ないのですが、教えていただけると助かります。 よろしくお願いします。

  • 環境変数について

    OSはRedHatLinux9、シェルはbashを使っているのですが、環境変数(パスの設定)はどこのファイルに書くのが一般的なのでしょうか? それぞれのユーザのホームディレクトリでls -aとしたら、.bash_profile、.bashrcがあり、/etcにはprofileがあります。 最近は、.bash_profileにパスを設定するのですが、あまり他のファイルに書くのと何が違うのかわからずに書き込んでいます。できれば、その違いまで教えていただければ幸いです。よろしくいお願いします。