dosya CLIでファイルをアップロード・ダウンロードする

ワークスペースとパスを明示してテストファイルを転送し、再開、並行処理、上書きの動作を理解して、ダウンロードしたデータを安全に検証します。

最終確認日

スクリーンショットは英語版の画面です。

機密情報を含まないファイルを1件選び、ワークスペースを明示し、ローカルの転送元とダウンロード先を別のパスに指定してください。アップロードが成功するとdosyaにコンテンツが保存されます。--forceを使ったダウンロードではローカルファイルが置き換わる場合があります。コマンドを自動化する前に往復転送を確認してください。

手順

ワークスペースを選び、必要に応じて転送先フォルダーIDを選んでください。

DOSYA_WORKSPACE_ID='ws_REPLACE_ME'
DOSYA_FOLDER_ID='fld_REPLACE_ME'

printf 'Dosya CLI transfer check\n' > cli-transfer-check.txt
dosya upload ./cli-transfer-check.txt \
  --workspace "$DOSYA_WORKSPACE_ID" \
  --folder "$DOSYA_FOLDER_ID"

ワークスペースのルートにアップロードするには--folderを省略してください。--workspaceも保存された既定値もない場合、Workspace ID required. Use -w <id> or set default: dosya workspace use <id>でコマンドが停止します。ローカルパスが存在しない場合はFile not found: …が表示されます。--recursiveを指定しないフォルダーは、予期せず階層を失わないよう拒否されます。

CLIは該当エンドポイントが利用可能な場合、転送前に現在のワークスペースのアップロードルールを読み取ります。禁止された拡張子や設定上限を超えるファイルは、サーバーのルールに基づいてローカルで拒否されます。合計が残りのストレージを超えると警告が表示されますが、容量制限の最終判断はサーバーが行います。ロールとキーの両方でアップロードが許可されている必要があります。

50 MiBを超えるファイルはマルチパートでアップロードされます。各パートは再試行され、<filename>.dosya-uploadサイドカーファイルに再開可能なセッションが記録されます。中断後は同じコマンドを再実行してください。ファイルの大きさと更新日時が一致する場合のみサイドカーファイルが使用され、成功後に削除されます。小さいファイルは単一のストリーミングリクエストを使用し、再試行可能な失敗の場合は1秒、3秒、8秒待って再試行します。

ワークスペースを明示し、アップロード結果、別のダウンロードパス、大きさまたは整合性の比較を示すdosya CLIの転送手順。
元のファイルを保持し、1回アップロードして別の名前でダウンロードし、コマンドの規模を広げる前に結果を比較してください。スクリーンショットを原寸大で開く。

アップロードしたファイルのIDを取得する

スクリプトでは進捗テキストを解析せず、JSONを使用してください。

dosya upload ./cli-transfer-check.txt \
  --workspace "$DOSYA_WORKSPACE_ID" \
  --folder "$DOSYA_FOLDER_ID" \
  --json > upload-result.json

DOSYA_FILE_ID=$(python3 -c 'import json; print(json.load(open("upload-result.json"))["file"]["id"])')
printf '%s\n' "$DOSYA_FILE_ID"

単一ファイルの応答にはfile.idとfile.nameが含まれます。メタデータが必要な場合にのみupload-result.jsonを保持してください。APIキーは含まれません。既存ファイルの新しいバージョンとして意図的に置き換えるには、既存ファイルのIDまたはパスとともに--version-ofを使用してください。

dosya upload ./report-v2.pdf --workspace "$DOSYA_WORKSPACE_ID" --version-of reports/report.pdf

バージョンのアップロードは保存済みファイルの現在のバージョンを変更します。新しいバージョンがdosyaに表示されるまでローカルの元ファイルを保持してください。別のファイルを作成する場合は--version-ofを使用しないでください。

新しいローカルパスにダウンロードする

返されたIDまたはワークスペースからの相対パスでファイルを指定してください。

mkdir -p ./dosya-transfer-check
dosya download "$DOSYA_FILE_ID" --output ./dosya-transfer-check/received.txt
cmp ./cli-transfer-check.txt ./dosya-transfer-check/received.txt

--outputにフォルダーを指定すると、その中でサーバーのファイル名が使用されます。出力フラグがない場合は現在のフォルダーが使用されます。転送先が既に存在する場合、対話型ターミナルでは上書き前に確認されます。JSONまたは非対話型の実行ではalready exists. Use --force to overwrite.で停止します。--forceは追加の確認なしにそのローカルパスを置き換えます。

ダウンロードは小さいファイルには1接続、大きいオブジェクトには既定で最大8並列接続を使用します。--connectionsには1~16を指定できます。分割ダウンロードが中断されると<output>.dosya-downloadが保持されます。同じファイルとパスで同じコマンドを再実行すると、完了済みの範囲を引き継いで再開できます。期限切れの一時URLは最大3回更新されます。

転送後、CLIは保存されたコンテンツを認識可能な元のETag(通常のMD5またはdosyaのマルチパート複合形式)と照合します。不明なETag形式は推測せずにスキップされます。--no-verifyはこの整合性チェックを無効にするため、互換性の問題が確認された場合に限って使用してください。大きさだけではすべての破損を検出できません。

dosya CLIのターミナルコマンドやAPIキーとは別のdosya Zapier設定ページ。
CLIはRESTが有効な独自のAPIキーを使用します。Zapierの招待や設定画面ではターミナルの転送は設定されません。スクリーンショットを原寸大で開く。

フォルダーや複数のファイルを転送する

--recursiveでフォルダーをアップロードできます。既定ではdosyaはローカルフォルダーと同じ名前の最上位フォルダーを作成します。選択した転送先に内容だけを配置するには--contentsを追加してください。

dosya upload ./project --recursive --workspace "$DOSYA_WORKSPACE_ID" --parallel 3
dosya upload ./project --recursive --contents --workspace "$DOSYA_WORKSPACE_ID"

アップロードの並行数は既定で3、最大16です。ワークスペースの同時アップロード上限が小さい場合はさらに減らされます。リモートフォルダーのダウンロードには専用の再帰的な手順を使用してください。指定した複数のファイルを1つのアーカイブにまとめるにはdosya download --zip FILE... -o bundle.zipを使用してください。

期待される結果

アップロード結果に、目的のワークスペースとフォルダー内のファイルIDが表示されます。そのIDを新しいローカルパスにダウンロードすると、上書きの曖昧さなく完了します。cmpまたはCLIの整合性チェックで、受信データが元と一致することを確認できます。

関連ガイド

この記事は役に立ちましたか?

評価の結果を読み込んでいます…

投票すると、回答を変更できるように、必要な投票用Cookieが最長180日間保存されます。

質問と回答

このガイドの手順について質問できます。質問は確認後に公開されます。

公開の質問には、アカウントの詳細、認証情報、非公開ファイルを含めないでください。これらについては 非公開サポート をご利用ください。

質問を読み込んでいます…

    dosyaアカウントにサインインすると、質問を投稿できます。

    やり直す前に結果を確認

    操作をもう一度確認する必要があるときは、次の共通の確認事項をご利用ください。