1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

windowsのバックアップで$OFフォルダができちゃった、、、。

Last updated at Posted at 2021-03-22

はじめに

    windowsバックアップの中にある謎の$OFファイルについて、シェルスクリプトを使った解決手段を一つ提案したいと思います。

目次

      
  1. 経緯
  2. $OFフォルダって何なのか
  3. 解決手段

#1.経緯
    先日、windowsより使いやすいと気づいたので、macに移行することを決めましたが、諸事情につき移行アシスタントが使えませんでした。そこでハードディスクにバックアップをとっておき、それをmacに移すことにしましたが、、、、。


Cドライブの他に、$OFフォルダができています。またこのフォルダの中にはさらに数字が割り振られているフォルダがあり、その中にいくつかのファイルが存在しているようで、ファイルをチェックすると前のPCで作成したプログラムやスクリーンショットなどが散見されましたが、元のファイルにあった階層関係及びファイル名が失われているようでした。
#2.$OFフォルダって何なのか
microsoftの質問フォーラムにていくつか回答が載っていました。windowsのファイル履歴によるバックアップの際に、フォルダ名(ファイル名)+タイムスタンプの文字数が255文字の制限を超えた時、あるいはパスが長すぎる時に別のファイル名として保存されたものが、$OFにまとめられているようでした。OF(Over Flow)ということらしいです。

#3.解決手段
フォルダを全部開いてファイルをチェックしていたら日が暮れてしまうので、ファイルに残っている情報をもとにシェルスクリプトでファイルの分別を行うことにしました。ファイルにある情報とは拡張子のことです。xlsxだったりpngのような拡張子ごとにファイル分けされれば、このままの状態よりは探しやすくなると思います。

of.sh
#IFS(Internal Filed Separator)
IFS_BACKUP=$IFS
IFS=$'\n'  
     
#全てのファイル再帰検索
ALLFILE=$(find . -name '*.*')

#全てのファイルから、拡張子を重複なしで抽出 sedでタイムスタンプなどを取り除いている
find . -name $ALLFILE | sed -r s#"\./[0-9]*/[0-9]* \([0-9]{4}_[0-9]{2}_[0-9]{2} [0-9]{2}_[0-9]{2}_[0-9]{2} UTC)."## >> in.txt
EXTENSION=$(sort in.txt | uniq)

for folder in $EXTENSION
do
    #その拡張子のファイルができていないなら新たに作成する
    if [ ! -e {$folder} ]; then
            mkdir $folder
    fi
done

for file in $ALLFILE
do
    #拡張子ごとにファイルに振るい分ける
    EX=$(echo $file | sed -r s#"\./[0-9]*/[0-9]* \([0-9]{4}_[0-9]{2}_[0-9]{2} [0-9]{2}_[0-9]{2}_[0-9]{2} UTC)."##)
    #コピーする
    cp $file $EX/
    
done

IFS=$IFS_BACKUP

実行後、こんな感じで拡張仕事に割り振られます。

#4.おわりに
$OFフォルダに重要なファイルがいくつかあったので取り出せて良かったです。しかし、macは使いやすいですね。visual studioかxcodeかで言われると今のところvisual studioの方が好きですが。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?