開発

gsutil cpでリストで指定したファイルをコピーする方法

gsutil cpでリストで指定したファイルをコピーする方法

開発者がコマンドラインからGoogle Cloud Storage (GCS) を操作できるようにした gsutil パッケージ。

複数のファイルをGCPにコピーする場合は gsutil cp コマンドを並列に処理する為に gsutil -m cp src_dir/*.txt gs://my-bucket といった感じで使う。

複数コピーは可能だが、指定したファイルのみ複数コピーするにはどうしたらよいのか。

少年
さっきの src_dir/*.txt みたいに指定したらいいんじゃないの?
それだとフォルダに 1.txtから5.txtまであった場合、全部コピーしちゃうでしょ。
1.txtと2.txtのみコピーしたい場合とか困るわけですよ。
からさん
少年
あー、そっか。
その場合どうするんだろ。

今回はそんな問題を解決するために、「gsutil cpでリストで指定したファイルをコピーする方法」を解説する。

この記事を書いている人


からさん
システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。PythonとSQLが得意。最近GCP環境を習得中。

記事を読むメリット

  • gsutil cpでリストで指定したファイルをコピーする方法がわかる

  • gsutil cpでリストで指定したファイルをコピーする方法

    gsutil cpでリストで指定したファイルをコピーする方法

    gsutil cpでリストで指定したファイルをコピーする方法、それは -I (アイ)のオプションを使うことだ。

    Googleのリファレンスを読むと、 -I (アイ)のオプションを使うと stdin、つまり標準入力を受け付けるようになる。

    Unixの cat コマンドでfilelistを読み込んで1行ずつ分解したリストを、パイプで繋いで gsutil -m cp -I に渡すことで、filelistに記載された全てのファイルをコピーすることができる。

    You can use the -I option with stdin to specify a list of URLs to copy, one per line. This allows you to use gsutil in a pipeline to upload or download objects as generated by a program:

    cat filelist | gsutil -m cp -I gs://my-bucket
    



    少年
    で、どうやって使うの?
    上で書いた「filelist」ってのがファイル一覧の書かれたテキストファイル、つまり「filelist.txt」とすればわかりやすいかな。
    からさん

    srs_dirのフォルダにあるファイル

    1.txt
    2.txt
    3.txt
    4.txt
    5.txt
    

    filelist.txtの中身

    1.txt
    2.txt
    

    実行するコマンド

    cat filelist.txt | gsutil -m cp -I gs://my-bucket
    
    こうするとフォルダの中には5つのファイルがあるけど、filelist.txtで指定した2つのファイルだけコピーすることができます。
    からさん
    少年
    なるほどー



    gsutil cpでリストで指定したファイルをコピーする方法 まとめ

    gsutil cpでリストで指定したファイルをコピーするには -I (アイ)のオプションを使って catで読み込んだリストを引数に指定しよう。

    cat filelist.txt | gsutil -m cp -I gs://my-bucket
    



    他にもgsutilで"argument list too long"エラーが出てしまう原因と解決方法の記事なんかもあるので、気になったら見て欲しい。

    コチラもオススメ

    KRSW

    駆け出し機械学習エンジニア。機械学習、DB、WEBと浅く広い感じ。 Junior machine learning engineer. Not a specialist but a generalist who knows DB, WEB too.

    役に立ったらシェアしてくれると励みになります。

    にほんブログ村 IT技術ブログへ

    -開発
    -, , ,

    Translate »

    Copyright© ITips , 2020 All Rights Reserved.