DropBoxは指定したディレクトリ内のデータをクラウドで保管してくれる便利なサービスですが、保存しなくても良いファイルまで保存されると困る場面があります。
標準機能として「選択型同期」機能がありますが、これで指定した除外対象は、同期されませんが、「同期はしたくないけどローカルには保存したい」ということが出来ません。
そこで、下記の方法で動機対象から除外する方法を試みた。
公式
Dropbox ファイルやフォルダを「無視」に設定する
https://help.dropbox.com/ja-jp/files-folders/restore-delete/ignored-files
公式には [dropbox.com と同期しない]をクリックします。
とありますが、Dropbox Plus (これ) にはこの項目がありませんでした。
なので、「コマンドラインでファイルやフォルダを「無視」に設定する」項目を元に、スクリプトファイルを作って設定することにしました。
除外の注意
この方法は、拡張ファイル属性を利用したもので、dropbox.com上にアップロードしないというルールを追加するだけでdropbox.comに何かをするものではないようです。
設定したデバイスでのみ働く機能のようなので、複数のデバイスで除外する場合は、そのすべてのデバイスで同じように設定が必要です。
Mac
- 下記スクリプトファイルを適当なファイル名(今回はファイル名の例としてdropbox_ignore.sh)を設定して保存。
- 保存したら、次のようにchmodで実行権限をもたせる。
chmod 777 dropbox_ignore.sh
- 実行すると、設置したファイルと同じディレクトリにある、スクリプト内で指定した特定のファイル・ディレクトリがdropboxの同期から除外される。
スクリプト
Mac版とLinux版で同じスクリプトに収めました。Linux版では、attr
をインストールする( apt-get install -y attr
)必要があるかもしれません。
#/bin/bash
if [ "$(uname)" == 'Darwin' ] || [ "$(expr substr $(uname -s) 1 5)" == 'Linux' ]; then
cd "$(dirname "$0")"
fi
echo "${PWD}"
# ここに配列で除外する項目を設定する。
# この場合、node_modulesとignore_filesファイルもしくはフォルダが除外される。
ignore_name=("node_modules" "ignore_files")
for file in ${ignore_name[@]}
do
if [ -e $file ];then
if [ "$(uname)" == 'Darwin' ]; then
# Mac
xattr -w com.dropbox.ignored 1 "${PWD}/${file}"
echo "--- ${PWD}/${file} is dropbox ignores ---"
elif [ "$(expr substr $(uname -s) 1 5)" == 'Linux' ]; then
# Linux
attr -s com.dropbox.ignored -V 1 "${PWD}/${file}"
echo "--- ${PWD}/${file} is dropbox ignores ---"
fi
fi
done
exit 0
Windows
Mac版と基本的には同じ手順だが、こちらはPowerShellで実行させる必要があります。
PowerShell内で実行させるか、実行ファイルとして実行させる場合は.ps1
ファイルとして保存して実行させます。ただし、デフォルトではファイルでの実行はポリシーで禁止されているので、実行できるように設定する必要があります。
https://techinfoofmicrosofttech.osscons.jp/index.php?PowerShellのPS1ファイルの作成と実行
スクリプト
# ここに配列で除外する項目を設定する。
# この場合、node_modulesとignore_filesファイルもしくはフォルダが除外される。
$files = @('node_modules','ignore_files');
for($i = 0; $i -lt $files.Count; $i++){
$path = "$Pwd" + '\' + $files[$i];
if (Test-Path "$path")
{
Write-Host "--- $path is dropbox ignores ---";
Set-Content -Path "$path" -Stream com.dropbox.ignored -Value 1;
}
}
実行結果
実行すると、次のようにアイコンが「 - 」のバッチになります。
再び同期する方法
対象のファイル・ディレクトリを右クリックしてdropbox.comに同期する
を指定すると、再び同期が始まります。