PowerShell

【PowerShell】古いファイルのみを圧縮する


Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

こんにちは!SE ブログの相馬です。

 

 

 

今回は、古いファイルを ZIP に圧縮する方法について書いてみました。古いファイルを ZIP に圧縮する運用としてよく作業するのがログファイルかと思います。サーバーやネットワークの運用をしていると、ログファイルがどんどんたまりますよね。ログファイルは大体日時別にたまりますので、一カ月も経てばものすごい量になります。

 

 

サーバー上で動いているアプリケーションの機能でログファイルの圧縮の機能があれば良いのですが、無い場合は手動でファイルを指定して ZIP で圧縮という事をするのは骨が折れる作業だと思いますし、時間がもったいないと思います。

 

 

ここでは PowerShell を使い、更新日時が指定した日数より前であれば指定のフォルダに ZIP ファイルとして圧縮する事ができますので、説明してゆきたいと思います。

 

 

 

ファイルを ZIP に保存する

 

 

ファイルを ZIP に保存するには、Compress-Archive コマンドレットが使えます。

 

Compress-Archive | Microsoft PowerShell

 

 

ここでは、以下の流れで処理をします。

 

  1. ログファイルがある C:\temp\log のパスを $purge_dir に代入
  2. ファイルを削除する指定日数は 3 日前として $retention に代入
  3. Get-ChildItem コマンドレットで、ログファイルの情報を取得
  4. Where-Object コマンドレットで、 3 日前より古いファイルの情報を取得
  5. Get-ChildItem コマンドレットで、該当ファイルを取得
  6. Compres-Archive コマンドレットで、圧縮ファイルを指定の場所に保管

 

 

処理前は C:\temp\log フォルダに以下のようにログファイルがある状態です。

 

 

 

 

 

処理後には C:\temp\log\archive フォルダに ZIP ファイルが保管されました。

 

 

 

 

ただし、このスクリプトではエラー処理に対応しておりませんので、try-catch ブロックで書いてみます。

 

 

 

 

以上となります。いかがでしょうか。

 

 

このような形で古いファイルを削除する事が自動化できますと、ログファイル管理やバックアップファイルの管理の自動化など、色々な用途で応用ができるかと思います。

 

 

では最後までお読みいただきありがとうございました!

  • この記事を書いた人

そーまん

セキュリティエンジニアやってます。
ブログ歴3年。PVは月15万PV程度。
趣味はボクシング、筋トレ、登山です。
穏やかで人見知りな性格です。

人気記事

1

こんにちは!そーまんです。 今回は、PC に適用されている GPO を確認する方法について書きました。 本題に入る前に、一応参考までにGPOの適用タイミングについての記事をここに貼りましたので、必要に ...

2

こんにちは!そーまんです。 今回は sysprep について、全体的に PC をセットアップする観点から書いてみました。長々と書いてあります。まずは前置きからです。 まずはじめに 組織では PC のラ ...

3

こんにちは!そーまんです。 今回は、グループポリシー (GPO) を使って、特定のコンピューターに対して、ドメインユーザーに ローカル管理者権限 (以下は特権と記載) を付与する方法について書きました ...

4

こんにちは!そーまんです。 今回は、Windows サインイン後に一時ユーザープロファイルが読み込まれてしまった場合の解決方法について書きました。 Windows 10 の検証環境をいじってたらサイン ...

5

こんにちは!そーまんです。 今回は、ユーザープロファイルを削除する方法について書いてみました。 企業の場合よくあることですが、1 台の PC を共有 PC として複数人で使ったり、また余り無いかもしれ ...

6

こんにちは!SE ブログの相馬です。       今回は、繰り返し文について書いてみました。PowerShell では他のプログラミング言語同様、繰り返し処理を行うことが ...

7

コマンドを使って CPU とメモリの使用率をデータで取得してみましたので、例えば PC のトラブルシューティングで問題を再現させる際にデータを取得しておくと、原因の特定に役立つ場合があるかと思います。

8

既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になるかと思います。

9

企業で多くの GPO が適用されている環境では、PC に GPO が適用されなかったりする問題が発生する場合があるかと思います。その中でも、コンピューターの構成またはユーザーの構成のどちらかで、...

10

こんにちは!そーまんです。 今回は、Windows Server 2019 で NTP サーバーと同期する方法について書きました。 NTP サーバーの必要性や時刻同期の重要性を理解することは社内のシス ...

-PowerShell
-


Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637

Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637

Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637