Google フォトのバックアップが溜まり続けて、気づいたら NAS の中がカオスになっていた。
写真と動画が同じフォルダに混在している状態が何年も続いていた。「いつか整理しよう」と思いながら後回しにしていたやつだ。
何が問題だったか
我が家の NAS(Synology DS223j)には、Google フォトからバックアップした写真・動画がまるごと入っている。フォルダ構成はこんな感じ。
\\DS223j\home\Photos\GooglePhotos\
├── 2009\
├── 2010\
│ ...
└── 2025\
年別にはなっているものの、写真も動画も一緒くた。動画だけ別フォルダで管理したいと思っていたのだが、総数を数えてみたら 1万2千本以上。手作業でやるのは明らかに無理だ。
PowerShell で一括移動
Windows の PowerShell を使って、動画ファイルだけを探し出し、年別フォルダごと別の場所へ移動するスクリプトを書いた。
対象の拡張子は .mp4 / .mov / .avi / .mkv など主要なものを網羅。移動先は \\DS223j\home\Movie\ 以下に年フォルダを自動作成する仕組みにした。同名ファイルが既にある場合は上書きせずスキップ。
$src = "\\DS223j\home\Photos\GooglePhotos"
$dst = "\\DS223j\home\Movie"
$extensions = @('.mp4','.mov','.avi','.mkv','.m4v','.3gp',
'.wmv','.flv','.webm','.mts','.m2ts','.mpg','.mpeg')
Get-ChildItem $src -Recurse -File |
Where-Object { $extensions -contains $_.Extension.ToLower() } |
ForEach-Object {
$year = ($_.DirectoryName -split '\\' |
Where-Object { $_ -match '^\d{4}$' } |
Select-Object -Last 1)
$destDir = Join-Path $dst $year
if (-not (Test-Path $destDir)) {
New-Item -ItemType Directory -Path $destDir | Out-Null
}
$destFile = Join-Path $destDir $_.Name
if (-not (Test-Path $destFile)) {
Move-Item -Path $_.FullName -Destination $destFile
}
}
結果
実行時間はおよそ15分。結果はこうなった。
| 年 | 動画本数 |
|---|---|
| 2009 | 33本 |
| 2010 | 73本 |
| … | … |
| 2022 | 1,957本 |
| 2025 | 5,649本 |
| 合計 | 12,120本 |
エラーなし、スキップなし。完璧だった。
2025年が5,649本と突出して多いのは、子どもが生まれてから撮影頻度が爆発的に増えたから。我ながら撮りすぎだと思う。
やってみて思ったこと
溜め込んできたデジタルの「とりあえず」が、スクリプト一本で片付いた。
整理するのが面倒で後回しにしてきたけれど、「手作業では無理」と判断した瞬間に自動化を考えたのは正解だった。
NAS に動画専用フォルダができたことで、テレビからのアクセスもしやすくなった。家族で見返す動線が整った気がする。
子どもの成長記録は、ちゃんと見られる場所に置いておかないと意味がない。
