2016-08-20 8 views
0

Googleドライブアカウントにバックアップデータを送信するための小さなシェルスクリプトを作成しました...うまくいきますが、古いファイルを削除する必要がありますグーグルドライブ。私は、シェルスクリプトとの良好ではないと私は以下のコードを終了する方法がわからない:私は削除する必要がシェルスクリプトforeachロジック... gdriveでGoogleドライブにデータを送信

#!/bin/sh 

# Backing up to local folder 
sudo gitlab-rake gitlab:backup:create 

# Sending files to google drive https://github.com/prasmussen/gdrive 
gdrive sync upload /path/to/backups folderID 

# Delete 5 days older backups from local folder 
find /path/to/backups/* -mtime +5 -exec rm {} \; 

# Get date fom 5 days ago 
DATA=`date +%Y-%m-%dT%H:%M:00 -d "5 days ago"` 

リストの下の行のすべてのファイルIDが:

# List files to delete 
gdrive list -q "'folderID' in parents and modifiedTime <= '$DATA-03:00'" --no-header | awk '{print $1;}' 

今をIただ実行する必要がある

gdrive delete <fileID> 

私が前にリストした各IDについて。

誰かがこのforeachシェルスクリプトの事で私を助けることができますか?

+0

誰かが私を助けようとしたが、それは動作しませんでした...次の方法を試みた: gdriveを親とmodifiedTime <= '$ DATA-03:00'のリスト-q "'folderID'" --no-header | awk {'print $ 1'} | xargs gdrive delete と gdrive list -q "親のfolderIDとmodifiedTime <= '$ DATA-03:00" " - no-header | xargs gdrive delete –

+0

'xargs gdrive delete'を' xargs echo'に置き換えるとどうなりますか? – mrmcgreg

+0

と 'echo'を使用すると、削除する必要があるファイルIDがリストされます... –

答えて

0

ストア(主に読みやすさのために)変数へのファイル:

IFS= read -r file; do 
    printf 'gdrive delete %s\n' "$file" 
done <<EOF 
    "$files" 
EOF 

私は」:

files=$(gdrive list -q ...) 

その後は、それがすべての空白が、各行の改行を取り除き空にするためにIFSを設定mにはprintfを使用していますので、コマンドの外観を確認できます。

これは基本的にBash FAQから取られます。

これは、bashが現在のシェルの文字列のフィールドを解釈する方法を変更することに注意してください。

+0

こんにちは、おかげで多くのヘルプ!しかし、それは動作しませんでした: 'backup.sh:18:backup.sh:構文エラー:"完了 "予期せぬ –

+0

もう一度ありがとう!いくつかの研究の後、私はあなたの助けに基づいてコードを変更し、それは働いた。 –

0

ありがとう@mrmcgreg!

files=$(gdrive list -q ... | awk {'print $1'}); 

IFS=" 
" 
for i in $files 
do 
    gdrive delete $i 
done <<EOF 
    "$files" 
EOF 

は、多分それは最善の解決策ではないのですが、それは働いた:

backup.sh 
Deleted '1471727727_gitlab_backup.tar' 
Deleted '1471727472_gitlab_backup.tar' 
Deleted '1471727308_gitlab_backup.tar' 
Deleted '1471724530_gitlab_backup.tar' 
Deleted '1471627308_gitlab_backup.tar' 

:D

関連する問題