このトピックでは、ossutil の使用時に発生する一般的な問題とその解決策について説明します。
ossutil v1.6.16 以降では、オペレーティングシステムに関係なく、ossutil をコマンド名として直接使用できます。v1.6.16 より前のバージョンでは、オペレーティングシステム固有の実行可能ファイル名を使用する必要があります。詳細については、「ossutil コマンドリファレンス」をご参照ください。
ossutil は署名バージョン 4 をサポートしていますか?
はい、ossutil V1.7.12 以降は署名バージョン 4 をサポートしています。詳細については、「Authorization ヘッダーに V4 署名を含める (推奨)」をご参照ください。
ossutil は、既存のコマンドに --sign-version と --region オプションを追加します。次のコマンドは、署名バージョン 4 を使用して China (Hangzhou) リージョンにバケットを作成します。
./ossutil64 --sign-version v4 --region cn-hangzhou mb oss://examplebucket
低頻度アクセス (IA) オブジェクトと標準オブジェクトの同期はサポートされていますか?
はい、ossutil は低頻度アクセス (IA) オブジェクトと標準オブジェクト両方の同期をサポートしています。詳細については、「概要」をご参照ください。
同じ名前のオブジェクトの上書きを防ぐ方法
ossutil コマンドに -u オプションを追加します。このオプションを使用すると、ossutil は同じ名前の既存のオブジェクトを上書きしません。
-u オプションを使用してオブジェクトをアップロードする際に「skip」 メッセージが表示される理由
これは想定される動作です。-u オプションを使用すると、ossutil はアップロードされるオブジェクトの最終更新日時を、宛先バケット内の同じ名前の既存のオブジェクトと比較します。既存のオブジェクトの最終更新日時が、アップロードされるオブジェクトと同じかそれより新しい場合、ossutil はそのオブジェクトをスキップします。-u オプションを使用してオブジェクトをアップロードする場合、「skip」 メッセージは正常な表示です。
バケット内のオブジェクトが保持したいバージョンである場合は、この「skip」 メッセージを無視して問題ありません。
オブジェクトの復元時に HTTP 403 エラーが発生する理由
オブジェクトの復元時に HTTP 403 エラーが発生する原因は、次のいずれかです。
操作を実行している Resource Access Management (RAM) ユーザーに必要な権限がありません。
禁止されたコンテンツのため、OSS がオブジェクトをブロックしています。
解決策:
権限の不足:RAM ユーザーに必要な権限を付与してください。
コンテンツ違反:ブロックされたオブジェクトを削除するか、無視してください。
ls コマンドの実行後に空に見えるバケットを削除できない理由
オプションなしの ls コマンドでは、未完了のマルチパートアップロードのパーツや、バージョニングが有効なバケット内の以前のオブジェクトバージョンは一覧表示されません。バケットにこれらのいずれかが含まれている場合、バケットは実際には空ではなく、rm コマンドだけでは削除できません。
バケットを削除するには、次のいずれかの方法を使用します。
削除されたバケットとオブジェクトは復元できません。これらのコマンドを実行する際は、十分に注意してください。
-
まずパーツと以前のバージョンを削除してから、バケットを削除します。
-
未完了のマルチパートアップロードのパーツとすべてのオブジェクトバージョンを削除します。
-
未完了のマルチパートアップロードのパーツを一覧表示して削除します。
./ossutil64 ls oss://bucket1 -m ./ossutil64 rm -m oss://bucket1 -r -
すべてのオブジェクトバージョンを一覧表示して削除します (バージョニングが有効なバケットの場合)。
./ossutil64 ls oss://bucket1 --all-versions ./ossutil64 rm oss://bucket1 --all-versions -r
-
-
バケットを削除します。
./ossutil64 rm oss://bucket1 -b
-
-
単一のコマンドでバケットを強制的に削除します。
-
バージョニングが無効な場合:
./ossutil64 rm oss://bucketname -abrf -
バージョニングが有効な場合:
./ossutil64 rm oss://bucketname -abrf --all-versions
-
アップロードまたはダウンロードの進行状況が 100% を超える理由
100 MB を超えるオブジェクトの場合、ossutil はデフォルトで再開可能なアップロードまたは再開可能なダウンロードを使用し、チェックポイントファイルを .ossutil_checkpoint ディレクトリに保存します。同じマシン上で複数の ossutil インスタンスが同時に実行されると、このデフォルトのチェックポイントディレクトリが共有されます。1 つのインスタンスが完了して .ossutil_checkpoint ディレクトリを削除すると、他の進行中の転送のチェックポイント状態が破損し、進行状況カウンターが不正な値 (100% を超えるなど) を表示し、転送が失敗する原因となります。
これを修正するには、次の手順を実行します。
失敗したタスクを停止し、アップロードまたはダウンロードを再開してください。
-
同時実行タスクを実行する場合、
cpコマンドで--checkpoint-dirオプションを使用して、それぞれに一意のチェックポイントディレクトリを割り当てます:./ossutil64 cp oss://bucket1/myphoto.jpg /dir --checkpoint-dir checkpoint
単一のオブジェクトをダウンロードする際に複数のリクエストがログに記録される理由
追加のログエントリは、次の 2 つの動作によって発生します。
自動再試行:ossutil は、失敗したリクエストや例外が発生したリクエストを自動的に再試行します。デフォルトでは最大 10 回です。
Range リクエスト:100 MB を超えるオブジェクトの場合、ossutil は Range リクエストを使用してオブジェクトをパーツに分けてダウンロードします。各パーツは個別のログエントリを生成します。
大きなオブジェクトのダウンロードが中断された場合の対処法
-
ダウンロードが中断される一般的な原因:
-
長時間のダウンロードによるタイムアウトまたは切断。
関連要因:ネットワーク帯域幅の制限、およびネットワークの安定性の低さ。
-
ダウンロードが end-of-file (EOF) エラーコードを返し、タスクが中断されます。
これは通常、接続の切断、またはディスクの読み書き速度がダウンロード速度に追いつかないことが原因で発生します。
-
-
解決策:再開可能なダウンロードを使用してください。
-
--checkpoint-dirオプションを使用してチェックポイントディレクトリを指定してください。転送が中断された場合、ossutil は保存されたチェックポイントファイルを使用して中断した箇所から再開します。./ossutil64 cp examplefile.txt oss://examplebucket/desfolder/ --checkpoint-dir localfolder/ --checkpoint-dirの詳細については、「コマンド構文」をご参照ください。
-
「Error: accessKeyID and ecsUrl are both empty」 エラーが表示される理由
ossutil がホームディレクトリで設定ファイルを見つけられませんでした。
これを解決するには、次のいずれかの方法を使用してください。
ossutil コマンドを実行する前に、ホームディレクトリに設定ファイルを作成してください。詳細については、「ossutil のインストール」をご参照ください。
-
各コマンドで
-cオプションを使用して、設定ファイルへのパスを明示的に渡してください。./ossutil64 cp examplefile.txt oss://examplebucket/destfolder/ -c /home/admin/.ossutilconfig
アップロードされたオブジェクトの Content-Type に charset=utf-8 が追加される理由
ossutil は、Go の標準 MIME ライブラリを使用してファイル拡張子の Multipurpose Internet Mail Extensions (MIME) タイプを検索し、オブジェクトの Content-Type を決定します。このライブラリは、テキストベースの MIME タイプに自動的に charset=utf-8 を追加します。たとえば、.htm ファイルの Content-Type は text/html; charset=utf-8 になります。
これを修正するには、ossutil を V1.7.14 以降にアップグレードしてください。アップグレードは再インストールによって行います。詳細については、「ossutil のインストール」をご参照ください。
ossutil を使用してディレクトリのサイズを照会できますか?
はい、du コマンドを実行してください。このコマンドは ListObjects API と ListMultipartUploads API を呼び出して、指定されたプレフィックス配下のすべてのオブジェクトを取得し、合計サイズを計算します。オブジェクト数が非常に多いディレクトリの場合、操作に時間がかかることがあります。
詳細については、「du」をご参照ください。
カスタムドメイン名を含む署名付き URL を生成する方法
-
バケットにカスタムドメイン名を設定してください。
詳細については、「カスタムドメイン名の設定」をご参照ください。
-
sign コマンドを実行して、署名付き URL を生成してください。
詳細については、「sign (署名付き URL の生成)」をご参照ください。
ossutil でオブジェクトを一覧表示する際に結果をソートできますか?
いいえ、ossutil はオブジェクトの一覧表示時に結果をソートすることをサポートしていません。
ossutil コマンドの実行時に「no such host」エラーが表示される理由
エンドポイントが無効です。-e オプションを使用して有効なエンドポイントを指定するか、設定ファイル内のエンドポイントを更新してください。-e オプションには、バケットのリージョンのエンドポイント (例: -e oss-cn-shanghai.aliyuncs.com) を指定します。エンドポイント文字列に余分な文字を含めないでください。エンドポイントの一覧については、「リージョンとエンドポイント」をご参照ください。
du コマンドの課金方法
du コマンドは API リクエスト料金が発生します。--all-versions がない場合は ListObjects を呼び出します。--all-versions がある場合は ListObjectVersions を呼び出します。どちらの場合も、ListMultipartUploads も呼び出します。詳細については、「リクエスト料金」をご参照ください。
バケットに未完了のマルチパートアップロードのパーツが含まれている場合、ListUploadedParts リクエストの料金も適用されます。