Téléversez des fichiers ou répertoires locaux vers un bucket OSS à l'aide de la commande cp. Cette commande prend en charge le téléversement simple, le téléversement avec reprise, le téléversement par lot et le téléversement incrémentiel, avec des options pour les métadonnées d'objet, la classe de stockage et la liste de contrôle d'accès (ACL).
Fonctionnement
La commande cp sélectionne une méthode de téléversement en fonction de la taille du fichier :
Téléversement simple : utilisé lorsque le fichier est plus petit que le seuil de téléversement avec reprise (par défaut : 100 Mo, configurable avec
--bigfile-threshold).Téléversement avec reprise : utilisé lorsque le fichier atteint ou dépasse le seuil. Les téléversements interrompus laissent des parties dans le bucket. Nettoyez régulièrement ces parties pour éviter des coûts de stockage. Vous pouvez supprimer manuellement les parties ou configurer des règles de cycle de vie pour une suppression automatique.
Remarque
À partir d'ossutil v1.6.16, vous pouvez utiliser ossutil comme nom binaire sur tous les systèmes d'exploitation pris en charge. Dans les versions antérieures, vous devez utiliser le nom binaire spécifique à votre système d'exploitation. Pour plus d'informations, consultez la section Référence des commandes ossutil.
Autorisations
Un compte Alibaba Cloud dispose de toutes les autorisations par défaut. Les utilisateurs RAM et les rôles RAM ne disposent d'aucune autorisation par défaut et nécessitent une autorisation via une politique RAM ou une politique de bucket.
|
Action API |
Description |
|
|
Téléverse un objet. |
|
|
Requis uniquement lors de la définition de tags d'objet pendant le téléversement. |
|
|
Requis uniquement lors de l'utilisation du chiffrement côté serveur Key Management Service (KMS). |
|
|
Syntaxe de la commande
ossutil cp file_url cloud_url [options]
Paramètres et options :
|
Paramètre |
Description |
|
file_url |
Le chemin du fichier local. Si la source est un répertoire, le chemin doit se terminer par un séparateur de chemin ( |
|
cloud_url |
Le chemin de l'objet, au format |
|
-r, --recursive |
Téléverse récursivement les fichiers et sous-répertoires. Sans cette option, seul l'objet spécifié est traité. |
|
-f --force |
Force l'exécution de l'opération sans invite de confirmation. |
|
-u, --update |
Téléverse uniquement si l'objet de destination est manquant ou plus ancien que le fichier source. |
|
--maxupspeed |
Vitesse de téléversement maximale en Ko/s. Valeur par défaut : 0 (illimité). |
|
--enable-symlink-dir |
Téléverse les sous-répertoires liés. Cette option est désactivée par défaut. |
|
--disable-all-symlink |
Ignore tous les liens symboliques pendant le téléversement. |
|
--disable-ignore-error |
N'ignore pas les erreurs lors des opérations par lot. |
|
--only-current-dir |
Téléverse uniquement les fichiers du répertoire source spécifié, en ignorant ses sous-répertoires. |
|
--bigfile-threshold |
Le seuil de taille pour un téléversement avec reprise. Unité : octets. Valeur par défaut : 100 Mo Valeurs valides : 0 à 9223372036854775807 |
|
--part-size |
Taille de la partie en octets. Par défaut, ossutil calcule cette valeur en fonction de la taille du fichier. Plage : 1 à 9223372036854775807 |
|
--checkpoint-dir |
Répertoire pour les enregistrements de téléversement avec reprise. Par défaut, ossutil crée un répertoire |
|
--encoding-type |
Encodage du nom de fichier. Définissez sur url pour encoder les noms de fichiers en URL. Non encodé par défaut. |
|
--include |
Inclut tous les fichiers qui répondent aux conditions spécifiées. Pour plus d'informations sur la syntaxe et les exemples, consultez la section Téléversement par lot de fichiers répondant à des conditions spécifiques. |
|
--exclude |
Exclut tous les fichiers qui répondent aux conditions spécifiées. Pour plus d'informations sur la syntaxe et les exemples, consultez la section Téléversement par lot de fichiers répondant à des conditions spécifiques. |
|
--meta |
Les métadonnées du fichier. Cela inclut les en-têtes HTTP standard et les métadonnées définies par l'utilisateur, qui commencent par |
|
--acl |
La liste de contrôle d'accès (ACL) du fichier. Valeurs valides :
|
|
--snapshot-path |
Répertoire pour les snapshots de téléversement. Lors des téléversements ultérieurs, ossutil lit ce répertoire pour effectuer des téléversements incrémentiels. |
|
--disable-crc64 |
Désactive la validation des données CRC-64. Activé par défaut. |
|
--disable-dir-object |
Ignore la création d'objets de répertoire pendant le téléversement. |
|
--payer |
Méthode de paiement. Définissez sur requester pour facturer le trafic et les frais de requête au demandeur. |
|
--tagging |
Tags à ajouter pendant le téléversement. Format : |
|
-j, --jobs |
Tâches simultanées pour les opérations multi-fichiers. Valeur par défaut : 3. Valeurs valides : 1 à 10000. |
|
--parallel |
Tâches simultanées pour les opérations sur fichier unique. Valeurs valides : 1 à 10000. Déterminé automatiquement en fonction du type d'opération et de la taille du fichier si non défini. |
|
--start-time |
Un horodatage UNIX. Les objets qui ont été mis à jour pour la dernière fois avant cette heure sont ignorés. Remarque
Seules les versions ossutil 1.7.18 et ultérieures prennent en charge ce paramètre. Pour plus d'informations sur la mise à niveau, consultez update (Mettre à niveau ossutil). |
|
--end-time |
Un horodatage UNIX. Les objets qui ont été mis à jour pour la dernière fois après cette heure sont ignorés. Remarque
|
Pour plus d'informations sur les autres options courantes de cette commande, consultez la section Options courantes.
Ajustez -j, --jobs et --parallel pour optimiser les performances. Par défaut, ossutil calcule le parallélisme en fonction de la taille du fichier. Pour les transferts par lot de gros fichiers, la concurrence réelle est jobs × parallel.
Si la machine dispose de ressources limitées (bande passante, mémoire ou CPU), réduisez la concurrence à 100 ou moins. Augmentez-la si les ressources sont sous-utilisées.
Une concurrence excessive peut dégrader les performances ou provoquer des erreurs EOF. Ajustez -j, --jobs et --parallel en fonction des ressources de votre machine. Commencez bas et augmentez progressivement pour trouver la valeur optimale.
Exemples
Ces exemples utilisent Linux. Ajustez les chemins pour votre système d'exploitation. Les exemples supposent :
Nom du bucket :
examplebucketRépertoire OSS :
desfolder/Répertoire local :
localfolder/Fichier local :
examplefile.txt
Téléverser un fichier unique
-
Téléversez un fichier vers un répertoire. Si aucun nom d'objet n'est spécifié, le nom de fichier d'origine est utilisé.
ossutil cp examplefile.txt oss://examplebucket/desfolder/ -
Téléversez un fichier unique et utilisez l'option --meta pour définir les métadonnées du fichier. Les métadonnées doivent être au format
header:value#header:value....ossutil cp examplefile.txt oss://examplebucket/desfolder/examplefile.txt --meta=Cache-Control:no-cache#Content-Encoding:gzip
Téléversements par lot
-
Téléverser uniquement les fichiers d'un dossier
Ajoutez l'option -r à la commande cp pour téléverser uniquement les fichiers d'un dossier local vers un chemin spécifié dans OSS.
ossutil cp -r localfolder/ oss://examplebucket/desfolder/ -
Téléverser des fichiers depuis un dossier et spécifier un horodatage
Téléversez des fichiers depuis un dossier local vers un chemin OSS spécifié. Les fichiers doivent avoir été modifiés entre 10:09:18 (UTC+8) le 31 octobre 2023 et 12:55:58 (UTC+8) le 31 octobre 2023.
ossutil cp -r localfolder/ oss://examplebucket/desfolder/ --start-time 1698718158 --end-time 1698728158 -
Téléverser un dossier et les fichiers qu'il contient
Utilisez l'option cp -r pour téléverser un dossier local et ses fichiers. OSS crée un objet de 0 Ko se terminant par / pour chaque sous-répertoire, mais pas pour le dossier lui-même. Pour créer un objet de dossier, utilisez la commande mkdir (créer des répertoires).
ossutil cp -r localfolder/ oss://examplebucket/desfolder/localfolder/ -
Téléverser un dossier et ignorer les fichiers existants
Pour relancer un téléversement par lot ayant échoué, utilisez --update (ou -u) pour ignorer les fichiers déjà téléversés et effectuer un téléversement incrémentiel :
ossutil cp -r localfolder/ oss://examplebucket/desfolder/ -u -
Téléverser uniquement les fichiers du répertoire actuel et ignorer les sous-répertoires
ossutil cp localfolder/ oss://examplebucket/desfolder/ --only-current-dir -r -
Téléverser sans générer d'objet pour le répertoire
Dans OSS, les répertoires sont simulés par des objets de 0 Ko se terminant par /. Utilisez --disable-dir-object pour ignorer la création de ces objets. La structure du répertoire apparaît toujours dans la console OSS, mais disparaît lorsque tous les fichiers qu'il contient sont supprimés.
ossutil cp localfolder/ oss://examplebucket/desfolder/ --disable-dir-object -r -
Téléverser des fichiers dans un sous-répertoire lié
ossutil cp localfolder/ oss://examplebucket/desfolder/ --enable-symlink-dir -r -
Ignorer tous les sous-fichiers liés et sous-répertoires liés pendant un téléversement
ossutil cp localfolder/ oss://examplebucket/desfolder/ -r --disable-all-symlink -
Par défaut, la commande cp suit les liens symboliques et téléverse le contenu du fichier vers lequel pointe le lien symbolique, plutôt que le lien symbolique lui-même.
Par exemple,
link.txtest un lien symbolique qui pointe verssource.txt:ossutil cp link.txt oss://examplebucket/Après le téléversement, le contenu de l'objet dans OSS correspond au contenu de
source.txt. Le comportement est identique pour les téléversements de fichier unique et les téléversements récursifs de répertoire (-r).Les options --disable-all-symlink et --enable-symlink-dir sont disponibles uniquement dans ossutil 1.x. Dans ossutil 2.x, ossutil suit les liens symboliques par défaut et ne fournit aucune option pour désactiver ce comportement.
Téléversement par lot de fichiers répondant à des conditions spécifiques
Utilisez --include et --exclude pour filtrer les fichiers pendant le téléversement par lot.
Les options --include et --exclude prennent en charge les formats suivants :
Astérisque (*) : Correspond à n'importe quel nombre de caractères. Par exemple, *.txt correspond à tous les fichiers TXT.
Point d'interrogation (?) : Correspond à un seul caractère. Par exemple, abc?.jpg correspond à tous les fichiers JPG dont les noms sont "abc" suivis d'un seul caractère, tels que abc1.jpg.
[séquence] : Correspond à n'importe quel caractère de la séquence. Par exemple, abc[1-5].jpg correspond aux fichiers nommés abc1.jpg à abc5.jpg.
[!séquence] : Correspond à n'importe quel caractère en dehors de la séquence. Par exemple, abc[!0-7].jpg correspond aux fichiers dont les noms ne sont pas abc0.jpg à abc7.jpg.
Une règle peut contenir plusieurs conditions include et exclude. ossutil les évalue de gauche à droite. Pour un fichier nommé test.txt, différents ordres de règles produisent des résultats différents.
Règle 1 :
--include "*test*" --exclude "*.txt". Lorsque la règle correspond à--include "*test*", le résultat est que test.txt répond à la condition. Lorsque la règle continue de correspondre à--exclude "*.txt", test.txt est exclu car son nom de fichier contient .txt. Le résultat final est que test.txt ne répond pas aux conditions.Règle 2 :
--exclude "*.txt" --include "*test*". Le fichier test.txt est exclu par la règle--exclude "*.txt". Cependant, la règle--include "*test*"inclut ensuite test.txt car son nom de fichier contient "test". Par conséquent, test.txt est inclus.Règle 3 :
--include "*test*" --exclude "*.txt" --include "te?t.txt". Tout d'abord, la règle--include "*test*"inclut test.txt. Ensuite, la règle--exclude "*.txt"exclut test.txt. Enfin, la règle--include "te?t.txt"inclut test.txt. Par conséquent, test.txt est inclus.
Vous ne pouvez pas spécifier un format de répertoire dans les conditions. Par exemple, --include "/usr/test/.jpg" n'est pas pris en charge.
Voici des exemples :
-
Téléverser tous les fichiers au format TXT
ossutil cp localfolder/ oss://examplebucket/desfolder/ --include "*.txt" -r -
Téléverser tous les fichiers dont les noms contiennent abc et qui ne sont pas au format JPG ou TXT
ossutil cp localfolder/ oss://examplebucket/desfolder/ --include "*abc*" --exclude "*.jpg" --exclude "*.txt" -r
Limiter la vitesse de téléversement
Utilisez --maxupspeed pour limiter la vitesse de téléversement en Ko/s. Exemples :
-
Téléverser un fichier et définir la limite de vitesse à 1 Mo/s
ossutil cp examplefile.txt oss://examplebucket/desfolder/ --maxupspeed 1024 -
Téléverser un dossier et définir la limite de vitesse à 1 Mo/s
ossutil cp -r localfolder/ oss://examplebucket/desfolder/ --maxupspeed 1024
Téléverser et définir des tags d'objet
Utilisez --tagging pour définir des tags d'objet pendant le téléversement. Séparez plusieurs tags par des esperluettes (&). Exemple :
ossutil cp examplefile.txt oss://examplebucket/desfolder/ --tagging "abc=1&bcd=2&..."
Téléverser et spécifier une classe de stockage
Utilisez --meta pour définir la classe de stockage pendant le téléversement. Valeurs valides :
Standard : Standard
IA : Accès peu fréquent
Archive : Stockage d'archive
ColdArchive : Archive froide
DeepColdArchive : Archive froide profonde
Si aucune classe de stockage n'est spécifiée, l'objet hérite de la classe de stockage du bucket. Pour plus d'informations, consultez la section Types de stockage.
Voici des exemples de téléversement d'un fichier et de spécification d'une classe de stockage :
-
Téléverser un fichier unique et définir sa classe de stockage sur Accès peu fréquent
ossutil cp examplefile.txt oss://examplebucket/desfolder/ --meta X-oss-Storage-Class:IA -
Téléverser un dossier et définir la classe de stockage de ses fichiers sur Standard
ossutil cp localfolder/ oss://examplebucket/desfolder/ --meta X-oss-Storage-Class:Standard -r
Téléverser et spécifier une ACL
Utilisez --acl pour définir l'ACL du fichier téléversé. Valeurs valides :
default : hérite de l'ACL du bucket (par défaut)
private : privé
public-read : lecture publique
public-read-write : Lecture et écriture publiques
Voici des exemples :
-
Téléverser un fichier unique et définir son ACL sur privé
ossutil cp examplefile.txt oss://examplebucket/desfolder/ --acl private -
Téléverser un dossier et définir l'ACL de ses fichiers sur lecture publique
ossutil cp localfolder/ oss://examplebucket/desfolder/ --acl public-read -r
Téléverser et spécifier une méthode de chiffrement
Spécifiez une méthode de chiffrement côté serveur pendant le téléversement. Exemples :
-
Téléverser un fichier et spécifier SSE-OSS comme méthode de chiffrement et AES256 comme algorithme de chiffrement
ossutil cp examplefile.txt oss://examplebucket/desfolder/ --meta=x-oss-server-side-encryption:AES256 -
Téléverser un fichier et spécifier SSE-KMS comme méthode de chiffrement et ne pas spécifier d'ID de CMK
ossutil cp examplefile.txt oss://examplebucket/desfolder/ --meta=x-oss-server-side-encryption:KMSLe chiffrement KMS entraîne de faibles frais d'utilisation de clé. Consultez la section Tarification KMS.
-
Téléverser un fichier et spécifier SSE-KMS comme méthode de chiffrement et un ID de CMK
ossutil cp examplefile.txt oss://examplebucket/desfolder/ --meta=x-oss-server-side-encryption:KMS#x-oss-server-side-encryption-key-id:7bd6e2fe-cd0e-483e-acb0-f4b9e1******
Pour plus d'informations sur le chiffrement côté serveur, consultez la section Chiffrement côté serveur.
Téléverser et générer des snapshots
Avec --snapshot-path, ossutil enregistre le lastModifiedTime des fichiers téléversés et l'utilise pour ignorer les fichiers inchangés lors des téléversements ultérieurs, accélérant ainsi les téléversements par lot incrémentiels. Assurez-vous qu'aucun autre utilisateur ne modifie les objets correspondants entre les téléversements. --snapshot-path est mieux adapté aux téléversements par lot volumineux. Exemple :
ossutil cp -r localfolder/ oss://examplebucket/desfolder/ --snapshot-path=path
ossutil ne supprime pas automatiquement les snapshots dans le dossier snapshot-path. Supprimez périodiquement les snapshots inutiles du dossier snapshot-path.
Les E/S de snapshot ajoutent une surcharge. Pour les petits lots, de bonnes conditions réseau ou des objets partagés, utilisez plutôt --update pour les téléversements incrémentiels.
Vous pouvez utiliser les options --update et --snapshot-path en même temps. ossutil vérifie d'abord les informations snapshot-path pour déterminer s'il faut ignorer un fichier. Si le fichier n'est pas ignoré en fonction du snapshot, ossutil utilise ensuite l'option --update pour déterminer s'il faut ignorer le fichier.
Téléverser et configurer le paiement par demandeur
ossutil cp localfolder/examplefile.txt oss://examplebucket/ --payer=requester
Téléversements inter-comptes ou inter-régions
Utilisez les options courantes -e, -i et -k pour téléverser un fichier local vers un bucket dans une région différente ou sous un compte Alibaba Cloud différent.
Spécifiez l'endpoint correspondant à la région du bucket. Pour plus d'informations, consultez la section Régions et endpoints.
ossutil cp exampleobject.txt oss://examplebucket/desfolder/ -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID -k yourAccessKeySecret