更新されたデータのみHDDにバックアップするコードを作りたい


PowerShell初心者です。

早速ですが、私の外付けHDD（Sドライブ）には色々なデータがあります。  
これを別の外付けHDD（Tドライブ）にコピーしてバックアップをとりたいです。  
そこで作成したコードは以下です。

[code]

    try{
        cp S:\XXX T:\ -Recurse
    }catch{
        $error[0] | Format-List -force | Out-File "error.log"
    }finally{
        Write-Output "HDDのバックアップが完了しました"
    }
    
[/code]

※try-catch文のことは正直理解できていないのですが、エラーが起きた時にどこで起きたのかログに残したいと思ったのでこのように書きました。

これでバックアップはできました。  
ここからが本題なのですが、今後オリジナル（Sドライブ）にデータが追加されたり変更されたときに、それをバックアップデータ（Tドライブ）にも反映させたいです。

私が考えているイメージは以下です。

  1. オリジナルのデータがTドライブに存在しているか確認
  2. 存在していなければコピーをとる（if文？）
  3. オリジナルの全データに対して同様の確認を行う（for文？）

このようなコードはどのように作ればいいでしょうか。  
また、他に良い方法があれば教えていただきたいです。




単純な `copy` コマンドを使うより、`robocopy` コマンドを使った方が簡単に実現できそうです。  
ただしバックアップ目的であれば最低でも `/xo` オプションは付与した方が良さそうです。

[Windowsのrobocopyコマンドでコピーするファイルの種類を選択／変更する](https://atmarkit.itmedia.co.jp/ait/articles/1309/27/news116.html)

>
> デフォルトでは、robocopyは「Changed」「Newer」「Older」となっているファイルだけをコピーするようになっている。つまり、内容が変更されているか、コピー元の方が新しいか、逆にコピー元の方が古い（コピー先の方が新しい）ファイルだけをコピーする。
>
> #### 古いファイルをコピーさせない
>
> xcopyの `/d` オプションでは、コピー元の方が古いファイルはコピーしないが、robocopy
> はデフォルトではこのようなファイルでもコピーする。これを変更して xcopy のようにするには `/xo` オプションを付ける。




単純な `copy` コマンドを使うより、`robocopy` コマンドを使った方が簡単に実現できそうです。  
ただしバックアップ目的であれば最低でも `/xo` オプションは付与した方が良さそうです。

[Windowsのrobocopyコマンドでコピーするファイルの種類を選択／変更する](https://atmarkit.itmedia.co.jp/ait/articles/1309/27/news116.html)

>
> デフォルトでは、robocopyは「Changed」「Newer」「Older」となっているファイルだけをコピーするようになっている。つまり、内容が変更されているか、コピー元の方が新しいか、逆にコピー元の方が古い（コピー先の方が新しい）ファイルだけをコピーする。
>
> #### 古いファイルをコピーさせない
>
> xcopyの `/d` オプションでは、コピー元の方が古いファイルはコピーしないが、robocopy
> はデフォルトではこのようなファイルでもコピーする。これを変更して xcopy のようにするには `/xo` オプションを付ける。

