Utilisez la commande sync pour synchroniser des fichiers ou des dossiers locaux vers OSS. La commande sync compare la date de dernière modification des fichiers ou utilise les informations de snapshot pour identifier et télécharger uniquement les fichiers modifiés de manière incrémentielle. Ce processus permet de maintenir efficacement la cohérence du contenu entre la source et la destination.
Fonctionnement
-
Nombre de fichiers
Lorsque vous exécutez la commande sync sans l'option --delete, il n'y a aucune limite au nombre de fichiers que vous pouvez synchroniser en une seule fois. Si vous incluez l'option --delete, vous pouvez synchroniser jusqu'à 1 million de fichiers à la fois. Si le nombre de fichiers à synchroniser dépasse 1 million, l'erreur over max sync numbers 1000000. est renvoyée.
-
Différences entre les commandes sync et cp
La commande sync parcourt de manière récursive tous les fichiers et sous-répertoires d'un dossier spécifié. La commande cp n'effectue une opération récursive que si vous ajoutez l'option -r.
Lorsque vous utilisez la commande sync pour synchroniser des données vers OSS, vous pouvez ajouter l'option --delete afin de supprimer les fichiers qui existent dans la destination mais pas dans la source. Cette option garantit que le répertoire de destination contient uniquement les fichiers de la synchronisation en cours. La commande cp ne prend pas en charge l'option --delete.
La commande sync ne prend pas en charge l'option --version-id. Vous ne pouvez pas utiliser la commande sync pour synchroniser les versions antérieures des fichiers dans un bucket pour lequel le versioning est activé. La commande cp prend en charge l'option --version-id.
Hormis ces différences, les commandes sync et cp s'utilisent de manière similaire. Pour plus d'informations sur l'utilisation et des exemples de la commande cp, consultez la rubrique cp (télécharger des fichiers).
Remarque d'utilisation
À partir de la version 1.6.16 d'ossutil, vous pouvez utiliser directement le binaire ossutil sans le renommer pour votre système d'exploitation. Pour les versions antérieures à la 1.6.16, vous devez renommer le fichier binaire. Pour plus d'informations, consultez la rubrique Référence de la commande ossutil.
Autorisations
Par défaut, seul un compte Alibaba Cloud dispose des autorisations nécessaires pour effectuer toutes les opérations API. Pour exécuter cette commande, un utilisateur RAM ou un rôle RAM doit recevoir les autorisations requises de la part d'un compte Alibaba Cloud ou d'un administrateur via une politique RAM ou une politique de bucket.
|
Action API |
Description |
|
oss:ListObjects |
Répertorie les objets du bucket de destination pour les comparer aux fichiers locaux. |
|
oss:PutObject |
Télécharge des fichiers vers OSS. |
|
oss:DeleteObject |
[Facultatif] Requis lorsque vous utilisez l'option --delete pour supprimer les fichiers supplémentaires du bucket de destination. |
|
oss:PutObjectTagging |
[Facultatif] Requis lorsque vous utilisez l'option --tagging pour ajouter des tags à un objet. |
Syntaxe de la commande
ossutil sync file_url cloud_url [options]
Le tableau suivant décrit les paramètres et les options.
|
Paramètre |
Description |
|
file_url |
Chemin du dossier local à synchroniser. Par exemple, |
|
cloud_url |
Chemin du dossier OSS de destination. Le format est |
|
-f --force |
Force l'exécution de l'opération sans invite de confirmation. |
|
-u, --update |
Synchronise un fichier uniquement si le fichier de destination n'existe pas, ou si la date de dernière modification du fichier source est plus récente que celle du fichier de destination. |
|
--delete |
Supprime les autres fichiers présents dans le chemin de destination et conserve uniquement les fichiers issus de la synchronisation actuelle. Avertissement
Avant d'utiliser l'option --delete, activez le versioning pour éviter toute suppression accidentelle de données. |
|
--enable-symlink-dir |
Synchronise les sous-répertoires liés. |
|
--disable-all-symlink |
Ignore tous les fichiers liés et les sous-répertoires liés lors de la synchronisation des dossiers. |
|
--disable-ignore-error |
N'ignore pas les erreurs lors des opérations par lot. |
|
--only-current-dir |
Synchronise uniquement les fichiers du répertoire actuel. Les sous-répertoires et les fichiers qu'ils contiennent sont ignorés. |
|
--output-dir |
Spécifie le répertoire de stockage des fichiers de sortie. Les fichiers de sortie sont des rapports générés en cas d'erreurs lors de la synchronisation par lot. Par défaut, ces rapports sont enregistrés dans le répertoire ossutil_output du répertoire actuel. |
|
-bigfile-threshold |
Seuil de taille de fichier pour le téléchargement avec reprise. Unité : octets.
Valeur par défaut : 100 Mo Plage de valeurs valides : 0 à 9223372036854775807 |
|
--part-size |
Taille des parties. Unité : octets. Par défaut, ossutil calcule une taille de partie appropriée en fonction de la taille du fichier.
Plage de valeurs valides : 1 à 9223372036854775807 |
|
--checkpoint-dir |
Spécifie le répertoire de stockage des informations de point de contrôle pour les téléchargements avec reprise. Lorsqu'un téléchargement avec reprise échoue, ossutil crée automatiquement un répertoire nommé |
|
--encoding-type |
Format d'encodage des noms de fichiers. Définissez la valeur sur url. Si vous ne spécifiez pas cette option, les noms de fichiers ne sont pas encodés. |
|
--snapshot-path |
Spécifie le répertoire d'enregistrement des informations de snapshot pour la synchronisation. Lors de la prochaine tâche de synchronisation, ossutil lit les informations de snapshot depuis ce répertoire pour effectuer une synchronisation incrémentielle. |
|
--include |
Inclut tous les fichiers qui répondent à la condition spécifiée. Pour plus d'informations, consultez les options include et exclude. |
|
--exclude |
Exclut tous les fichiers qui répondent à la condition spécifiée. Pour plus d'informations, consultez les options include et --exclude. |
|
--meta |
Définit les métadonnées des fichiers. Le format est |
|
--acl |
Liste de contrôle d'accès (ACL) des fichiers. Valeurs valides :
|
|
--maxupspeed |
Vitesse de téléchargement maximale. Unité : Ko/s. La valeur par défaut est 0, ce qui indique que la vitesse de téléchargement n'est pas limitée. |
|
--disable-crc64 |
Désactive la validation des données CRC-64. |
|
--payer |
Méthode de paiement de la requête. Si vous souhaitez que le demandeur paie les frais tels que le trafic et les requêtes générés par l'accès aux ressources du chemin spécifié, définissez cette option sur requester. |
|
-j,--job |
Nombre de tâches simultanées pour les opérations sur plusieurs fichiers. Valeur par défaut : 3. Plage de valeurs valides : 1 à 10000. |
|
--parallel |
Nombre de tâches simultanées pour une opération sur un seul fichier. Plage de valeurs valides : 1 à 10000. Si vous ne spécifiez pas cette option, ossutil détermine la valeur en fonction du type d'opération et de la taille du fichier. |
|
--retry-times |
Nombre de tentatives en cas d'erreur. Valeur par défaut : 10. Plage de valeurs valides : 1 à 500. |
|
--tagging |
Informations de tag des fichiers. Le format est |
Pour plus d'informations sur les autres options courantes de cette commande, consultez la rubrique Options courantes.
Exemples
Les exemples suivants utilisent un système Linux. Vous devez modifier les paramètres pour qu'ils correspondent à votre système d'exploitation et à votre environnement. Les exemples supposent l'environnement suivant :
Deux fichiers, d.txt et e.png, se trouvent dans le répertoire local localfolder. Le répertoire destfolder d'un bucket nommé examplebucket contient deux fichiers, a.txt et b.txt, ainsi qu'un sous-répertoire nommé C. Le contenu initial est le suivant.
Local root directory examplebucket
└── localfolder └── destfolder/
├── d.txt ├── a.txt
└── e.png ├── b.txt
└── C/
Synchroniser un dossier local vers OSS
Synchronisez tous les fichiers du répertoire local localfolder/ vers le répertoire de destination destfolder/. Cette opération télécharge uniquement les nouveaux fichiers. Les fichiers existants, tels que a.txt et b.txt, ainsi que le sous-répertoire C/ du bucket de destination, sont conservés.
ossutil sync localfolder/ oss://examplebucket/destfolder/
Une fois la synchronisation réussie, la sortie inclut le nombre de fichiers synchronisés, la taille totale des fichiers et le temps nécessaire à l'opération :
Succeed: Total num: 2, size: 750,081. OK num: 2(upload 2 files).
average speed 1641000(byte/s)
Après la synchronisation, la structure du répertoire destfolder/ est la suivante :
destfolder/
├── a.txt
├── b.txt
├── d.txt
├── e.png
└── C/
Supprimer les fichiers supplémentaires du répertoire de destination lors de la synchronisation
Lorsque vous synchronisez le répertoire local localfolder/, vous pouvez utiliser l'option --delete pour supprimer les fichiers et répertoires, tels que a.txt, b.txt et C/, du répertoire destfolder/ qui ne figurent pas dans la source.
ossutil sync localfolder/ oss://examplebucket/destfolder/ --delete
Après la synchronisation, la structure de répertoire de destfolder/ est identique à celle de localfolder/ :
destfolder/
├── d.txt
└── e.png
Filtrer et synchroniser des fichiers spécifiques
Vous pouvez utiliser les options --include et --exclude pour filtrer les fichiers à synchroniser.
-
Par exemple, la commande suivante synchronise uniquement les fichiers .txt.
ossutil sync localfolder/ oss://examplebucket/destfolder/ --include "*.txt"Après avoir exécuté la commande, seul le fichier d.txt est téléchargé et e.png est ignoré. Les fichiers existants dans le bucket de destination ne sont pas affectés.
destfolder/ ├── a.txt ├── b.txt ├── d.txt └── C/ -
La commande suivante synchronise uniquement les fichiers autres que .txt.
ossutil sync localfolder/ oss://examplebucket/destfolder/ --exclude "*.txt"Après avoir exécuté la commande, seul le fichier e.png est téléchargé et d.txt est ignoré. Les fichiers existants dans le bucket de destination ne sont pas affectés.
destfolder/ ├── a.txt ├── b.txt ├── e.png └── C/
Écraser de force les fichiers portant le même nom dans le répertoire de destination
Par défaut, si un fichier portant le même nom qu'un fichier que vous téléchargez existe déjà dans le répertoire de destination, ossutil vous demande de confirmer l'écrasement. Si vous êtes certain de vouloir écraser tous les fichiers de destination portant les mêmes noms, vous pouvez utiliser l'option -f ou --force pour ignorer l'invite de confirmation et forcer l'écrasement des fichiers.
ossutil sync localfolder/ oss://examplebucket/destfolder/ -f
Une fois la commande exécutée avec succès, la sortie inclut des informations telles que le nombre de fichiers synchronisés, la taille totale et la vitesse moyenne. Voici un exemple de sortie :
Succeed: Total num: 2, size: 750,081. OK num: 2(upload 2 files).
average speed 1641000(byte/s)
Synchronisation inter-comptes
Utilisez les options -e, -i et -k pour synchroniser des fichiers du répertoire local srcfolder vers le répertoire testfolder du bucket examplebucket. Ce bucket se trouve dans la région Chine (Shanghai) et appartient à un autre compte Alibaba Cloud.
Spécifiez le endpoint correspondant à la région de votre bucket. Pour plus d'informations, consultez la rubrique Régions et endpoints.
ossutil sync srcfolder/ oss://examplebucket/testfolder/ -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA**** -k 67DLVBkH7EamOjy2W5RVAHUY9H****
Conseil de sécurité : Inclure un AccessKey dans une commande présente un risque de sécurité. Pour les tâches automatisées ou à long terme, nous vous recommandons de créer un rôle RAM pour le compte source et d'accorder des autorisations au compte de destination. Cette méthode offre un accès inter-comptes plus sécurisé.