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秒待って再試行します。

アップロードしたファイルの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はこの整合性チェックを無効にするため、互換性の問題が確認された場合に限って使用してください。大きさだけではすべての破損を検出できません。

フォルダーや複数のファイルを転送する
--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アカウントにサインインすると、質問を投稿できます。