投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償)
logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)
The Document Foundation Wiki

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★

2015年12月27日日曜日

【Linux CentOS 6.6】あるディレクトリ以下にある全ファイルの内容を破壊し、なおかつ削除する方法


単純にファイルを削除するだけでは、特別な方法によってファイルが復元される可能性が高い。
そのため、ファイルの内容を出鱈目な値によって上書きして破壊してから削除を行うことで、それを難しくする。



<注意>
操作を間違えると、大切なファイルをまで破壊してしまうことになるので、注意すること。

以下のコマンドは、CentOS 6.6で、試したものである。



(例)
カレントディレクトリに存在する TargetDir ディレクトリ下(サブディレクトリも全て)の全ファイルを破壊し、なおかつ削除する。

まず、抹消対象になるファイルの一覧を得て、安全確認を行う。
$ find ./TargetDir/ -print0 -type f | xargs -0 echo

抹消してよければ、続いて次の抹消用コマンドを発行する。
$ find ./TargetDir/ -print0 -type f | xargs -0 shred -u


パイプ(|)の前では、対象のファイルパス一覧を取得している。
後は、shredコマンドによってファイルの内容を破壊し、-uオプションによって削除も行っている。

その他のコマンドの意味は、次のページを参照してください。
http://akira-arets.blogspot.jp/2011/07/linuxxargscp.html



上記処理においてファイルでなく、ディレクトリに対してshredコマンドが実行された場合、
次のようなメッセージが表示される。

shred: ./FILE/Directory/SubDirectory: failed to open for writing: Is a directory

ところで、この作業中に、jbd2/dm-0-8 というプロセスが topコマンドのリスト上に現れた。
これは、ファイルシステム(今回はext4)のジャーナリングプロセスらしい。(†2)



<参考>
(1)
【Linux CentOS5】ディレクトリ階層に分けて置かれた複数のファイルを条件指定で抽出し、別のディレクトリにまとめてコピーする【xargsと、cpコマンドの組み合わせ】
< http://akira-arets.blogspot.jp/2011/07/linuxxargscp.html > 2015年12月27日

(2)
jbd2/dm-0-8
<https://linuxacademy.com/community/posts/show/topic/173-jbd2dm08> 2015年12月30日

2015年12月13日日曜日

【MS SQLServer Express 2008 R2】SQLServerの起動時にストアドプロシジャをスタートアップさせ一時テーブルを復元する設定【Windows 8.1 Pro 64bit】

処理するのに時間のかかるストアドプロシジャを、予めスタートアップ時に実行し、
その結果を一時テーブルに保存し、他からのリクエストに応じられるようにする方法について



■ポイントは、二つである。

<0>導出を担当する「導出ストアドプロシジャ」を作成する

これは導出に時間を要するものとする。
既にユーザーデータベース内に作成されているものとする。


<1>導出結果をテンポラリテーブルに保存する「構成用ストアドプロシジャ」を作成する

導出をリクエストするたび処理に時間を要するストアドプロシジャは、
予め実行しておき導出結果をテンポラリテーブルに保存しておく。
結果を保持しているこのテンポラリテーブルに対してリクエストすれば速いからだ。


<2>スタートアップ時に自動的に実行されるように「構成用ストアドプロシジャ」を登録する

テンポラリテーブルは、SQL Server のシャットダウン(再起動)時に、自動的に消去される。
そのため再起動毎にテンポラリテーブルが自動構成されるように、
「構成用ストアドプロシジャ」をSQL Server のスタートアップに設定する。



◆スタートアップによって最終的に実行される、構成用ストアドプロシジャの作成を先ず行った


作成したテンポラリテーブル「構成用ストアドプロシジャ」は、
sp_TEST_StoreResultDataTo_TmpTable_TBLResult である。
ユーザーデータベース MYDataBase に保存した。
(スタートアップによって、最終的にこの構成用ストアドプロシジャが実行されるようにしたい。)  
USE MyDataBase
GO

CREATE PROC [dbo].[sp_TEST_StoreResultDataTo_TmpTable_TBLResult]
AS

    CREATE TABLE tempdb.dbo.TmpTable_TBLResult
        (
        コード int NULL
        ,名前 nvarchar(100) NULL
        )

    INSERT INTO tempdb.dbo.TmpTable_TBLResult
        (
        コード int NULL
        ,名前 nvarchar(100) NULL
        )
        Exec [dbo].[sp_TEST_ReturnResultData--時間のかかる導出用プロシジャを呼び出し


コードの説明:

この sp_TEST_StoreResultDataTo_TmpTable_TBLResult を実行すると、
テンポラリデータベース内 tmpdb にテンポラリテーブル TmpTable_TBLResult が作成され、
ここに既存の別のストアドプロシジャ sp_TEST_ReturnResultData による導出結果を、保存される。

作成するテーブルの構造は、sp_TEST_ReturnResultData による導出結果に合わせること。

この方法で作成されたテンポラリデータベース内の、テンポラリテーブル(名前の頭に#や、##を付けない)は、
接続セッションを問わずにアクセス可能であり、
SQL Server のシャットダウン時には自動的に削除される。



◆ユーザーデータベース内のストアドプロシジャをスタートアップ時に実行されるように設定する

スタートアップ時に、上記ユーザデータベース内の「構成用ストアドプロシジャ」が実行されればよい。

しかし、スタートアップに登録されるストアドプロシジャは、master データベース内に存在する必要がある
そのため、スタートアップ時に実行可能なストアドプロシジャ内部から、
ユーザーデータベース内のさきの「構成用ストアドプロシジャ」を実行するようにする。


○スタートアップ時に直接実行されるストアドプロシジャを次のように作成した。
USE [master]
GO

CREATE PROC [dbo].[sp_startup_userproc]
AS
   
    Exec [MyDataBase].[dbo].[sp_TEST_StoreResultDataTo_TmpTable_TBLResult]


コードの説明:
sp_startup_userproc は、master データベース内に保存されるストアドプロシジャである。
この中から、ユーザーデータベース MyDataBase 内の、既に作成済みの「構成用ストアドプロシジャ」を実行する。


○スタートアップの登録を行う。

この作成したストアドプロシジャ sp_startup_userproc を、次のようにしてスタートアップに登録する。
USE [master]
GO

sp_procoption   
    @ProcName = '
sp_startup_userproc',
    @OptionName = 'startup',
    @OptionValue = 'on'  --解除する場合は、off




これらによって、SQL Server が起動されるとき、一連のストアドプロシジャが実行される。


まとめると、次のような流れになる。
<SQL Server スタートアップ>
 ↓
(スタートアップ時に直接実行されるmasterデータベース内のストアドプロシジャ)
[master].[dbo].[sp_startup_userproc]
 ↓
(副次的に呼び出されるユーザーデータベース内の構成用ストアドプロシジャ)
[MyDataBase].[dbo].[sp_TEST_StoreResultDataTo_TmpTable_TBLResult]

この結果、起動時には必要なテンポラリテーブル tempdb.dbo.TmpTable_TBLResult が復元される。
あとは、任意のストアドプロシジャから、この構成済み一時テーブルを自由に使えばよい。




(参考 : 一時テーブルについて )
・Local and global temporary tables in SQL Server
<http://stackoverflow.com/questions/2920836/local-and-global-temporary-tables-in-sql-server> 2015年12月11日

・How to insert data from one table to another table
<https://blogs.technet.microsoft.com/mdegre/2009/09/08/how-to-insert-data-from-one-table-to-another-table/> 2015年12月11日

・Temporary Tables and Table Variables in Microsoft SQL Server 2008 T-SQL Programming
<https://www.microsoftpressstore.com/articles/article.aspx?p=2233324> 2015年12月11日

・In SQL Server 2008 ,is it possible to disable auto drop of global temp table
<http://stackoverflow.com/questions/2826282/in-sql-server-2008-is-it-possible-to-disable-auto-drop-of-global-temp-table> 2015年12月11日


( 参考 : スタートアップに関して )
・sp_procoption is not executing strored procedure with OPENQUERY
<http://stackoverflow.com/questions/31213192/sp-procoption-is-not-executing-strored-procedure-with-openquery> 2015年12月11日

・Configure Stored Procedures to Automatically Run at SQL Server Startup
<http://zarez.net/?p=1566> 2015年12月11日

・sp_procoption (Transact-SQL)
<https://msdn.microsoft.com/en-us/library/ms181720.aspx> 2015年12月11日

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad