Transfert et archivage automatisés de fichiers multimédias avec MASV et Backblaze

par Ankit Verma | 14 décembre 2021

Si vous travaillez régulièrement avec des vidéos, vous avez sans doute l'habitude d'envoyer des fichiers multimédias volumineux à vos clients/équipiers et de les sauvegarder ensuite sur une unité de stockage quelconque. Il y a de fortes chances que le transfert et l'archivage de vos fichiers multimédias se fassent en deux étapes. Aujourd'hui, je vais vous montrer comment transférer et archiver automatiquement des fichiers multimédias en un seul processus en utilisant une combinaison de portails MASV et Backblaze comme exemple.

Le principal avantage de la combinaison de ces deux actions, outre la rapidité et l'efficacité, est de s'assurer qu'aucun fichier n'est jamais oublié pendant le processus de sauvegarde. Tout le monde, à un moment donné, a ouvert un dossier pour voir des fichiers nommés comme fichier01.mp4, fichier02.mp, fichier01changed.mp4. Un processus de sauvegarde rapide qui se complique incroyablement vite. Cependant, l'utilisation d'un processus de sauvegarde automatique et facile permet de séparer chaque fichier par date de téléchargement et par taille de fichier. Cela peut et va vous faire gagner du temps et vous éviter de chercher à savoir quelle version d'un fichier est la plus importante. 

Aujourd'hui, l'intégration de MASV avec des fournisseurs de services en nuage comme Backblaze peut être facilement réalisée sur notre site Web. application web en quelques clics. Cependant, cet article va aller un peu plus loin en vous montrant comment mettre en œuvre ces étapes à l'aide de L'API Cloud Connect de MASV. Cela vous permet d'automatiser le processus au-delà d'une seule connexion au nuage et de créer une centrale d'automatisation qui relie plusieurs sites de l'entreprise. Portails MASV vers plusieurs fournisseurs de nuages/seaux de stockage. Nous utiliserons python3 comme langage de script pour démontrer la facilité avec laquelle cela peut être réalisé.

Transfert et archivage de médias avec MASV + Backblaze

transférer et archiver des fichiers multimédia avec masv et backblaze

Comme mentionné, nous allons utiliser MASV et Backblaze aujourd'hui. Notre objectif est de créer un simple script python3 qui connectera les deux services et pourra montrer la facilité avec laquelle la technologie Cloud Connect de MASV fonctionne. Ces deux technologies offrent un certain nombre de fonctionnalités. Voici quelques points forts de ce que nous utilisons aujourd'hui.

MASV :

  • Transfert ultra rapide de gros fichiers.
  • Transfert automatique de répertoires entiers.
  • Cloud Connect : l'intégration avec des cloud buckets externes pour déplacer automatiquement les fichiers là où vous en avez besoin.

BackBlaze :

  • Stockage à long terme illimité et bon marché.
  • Sauvegarde en nuage incroyablement facile.
  • Convivialité du flux de travail.
  • Prend en charge l'authentification à deux facteurs.

Nous utilisons Backblaze comme fournisseur de Cloud Connect pour l'intégration avec MASV. Toutes ces étapes peuvent être généralisées pour fonctionner avec n'importe quel fournisseur, comme indiqué dans notre guide de l'utilisateur. documentation.

Vous n'avez pas de compte MASV ?

Obtenez 100 Go en vous inscrivant.

Hypothèses de flux de travail

Pour l'avenir, nous allons supposer ce qui suit :

  • Un éditeur de code tel que Code Visual Studio.
  • Python3 installé et la possibilité d'exécuter des scripts.
  • Un compte MASV.
  • Compte Backblaze B2 avec clé API.

Avant de commencer, nous voulons nous assurer que vous avez une clé Backblaze B2. Veuillez suivre le guide à l'adresse https://www.backblaze.com/b2/docs/application_keys.html

Mise en place des exigences

Commencez par créer un fichier appelé backblaze.py c'est le script dans lequel tout le code sera écrit.

Ce script nécessite la possibilité d'envoyer des requêtes http et pour ce faire, nous allons utiliser la fonction demande bibliothèque.

Dans votre terminal, installez le demande paquet.

$ pip3 installer les demandes

Authentification avec MASV

Pour notre authentification, nous allons utiliser notre nom d'utilisateur/mot de passe. Cela peut également être fait avec un jeton d'utilisateur, mais pour des raisons de simplicité, nous utilisons aujourd'hui le nom d'utilisateur et le mot de passe. Nous recommandons vivement l'utilisation d'une clé API. Une clé d'API peut être facilement modifiée en cas de fuite de la clé. L'authentification de l'utilisateur permet d'accéder au tableau de bord complet de votre compte.


//python
Importation des demandes

api_uri = 'https://api.massive.app/v1'
api_auth_route = "/auth

auth_request = {
    "email" : "[email protected]",
    "password" : "yourpassword"
}

r = requests.post(
    api_uri + api_auth_route,
    json=auth_request
)
auth_response = r.json()
auth_token = auth_response['token']
team_id = auth_response['teams'][0]['id']

print("Récupération du jeton d'authentification")

Il y a un peu de texte standard ici pour nous permettre de commencer. La ligne #1 nous fait importer le fichier demande bibliothèque. Alors que la ligne #3 nous fait définir l'uri de l'api. C'est important car cela nous permet de changer facilement la route par défaut en cas de changement de domaine. Suivi par la route exacte pour l'authentification.

Nous remplissons notre nom d'utilisateur et notre mot de passe pour notre demande d'authentification. Il s'agit du nom d'utilisateur et du mot de passe que vous utilisez pour accéder au tableau de bord MASV. Enfin, nous passons à la réalisation de la requête. Avec la concaténation de chaînes de caractères, nous combinons l'api_uri et l'api_auth_route pour obtenir l'url complète. https://api.massive.app/v1/auth et attacher notre demande d'autorisation comme json.

Comme nous nous sentons bien aujourd'hui, nous partons du principe que la demande a été acceptée et nous commençons à saisir les variables (pour un aperçu de toutes les variables renvoyées, veuillez consulter le site suivant notre documentation.)

Les variables dont nous avons besoin sont :

  • auth_token : utilisé pour authentifier nos demandes
  • team_id : l'équipe à laquelle nous attachons nos demandes et notre connexion au cloud

Envoi d'une demande authentifiée

Super ! Nous avons maintenant notre jeton d'utilisateur, mais comment l'utiliser ? Dans le cas de l'api MASV, nous allons attacher notre token à nos headers de requête. Un simple morceau de json nous permettra de commencer à l'utiliser dans le script.

//python
team_id = auth_response['teams'][0]['id']
...

request_headers = {
    "Content-Type" : "application/json",
    "X-User-Token" : auth_token,
}

Configuration des automatismes avec les portails MASV

Un petit détour avant de commencer à utiliser Backblaze. Notre but ici est de automatiquement transférer et archiver des fichiers multimédia vers Backblaze. Nous pouvons le faire en utilisant la fonction Portail dans le MASV. Vous pouvez considérer un portail comme un seau dans lequel tous vos fichiers sont stockés dans le MASV.

Un portail peut être créé avec l'interface graphique ou avec un script rapide. Dans ce cas, nous allons utiliser un script rapide :

//python
    "X-User-Token" : auth_token,
}
...

# Obtenir l'identifiant du portail
api_portals_route = '/teams/{}/portals'.format(team_id)

# Cette requête échouera si le sous-domaine
# n'est pas modifié. Décommentez la ligne du sous-domaine
# et remplacez le `masvbackblaze` par le vôtre.
# pour que la demande aboutisse.
portal_request = {
    "nom" : "masvtobackblaze",
    "message" : "Envoi de données à Backblaze",
    "subdomain" : "masvbackblaze",
    "recipients" : [
        "[email protected]"
    ],
    "access_code" : "your_access_code",
    "has_access_code" : True,
    "download_password" : "your_download_password",
    "has_download_password" : True,
}

r = requests.post(
    api_uri + api_portals_route,
    headers=request_headers,
    json=requête_portail
)

# Nous sommes en train de créer quelque chose
# donc nous devons évaluer si cela
# fonctionne réellement
si r.status_code != 201 :
    print(r.status_code)
    print(r.json()["message"])
    exit()

portal = r.json()
portal_id = portal["id"]
print("Portail créé : {}".format(portal_id))

Il y a une tonne à déballer ici. Nous commençons par obtenir notre api_portails_route cette route interagit avec toutes les requêtes du portail que nous pouvons avoir besoin de faire. Python inclut l'adorable .format() qui nous permet d'inclure la fonction numéro d'équipe que nous avons récupéré plus tôt dans l'uri.

Il est nécessaire de créer un peu de texte standard pour la réponse réelle. Nous avons défini des valeurs par défaut raisonnables. Le site sous-domaine est un champ unique et devra être unique pour chaque personne. 

Notre requête utilise aussi maintenant notre jeton d'authentification avec la ligne headers=request_headers toute fonction de requête nécessitant une authentification inclura dorénavant ces en-têtes.

Nous voulons vérifier la création, donc nous vérifions la présence de l'élément 422 avec laquelle notre API va répondre. S'il existe déjà, il affichera le code d'erreur et sortira.

Note : Pour plus d'informations sur la création du portail visitez notre documentation.

Connexion de Backblaze

Nous sommes maintenant prêts à créer une connexion Backblaze B2. Pour ce faire, nous allons créer la connexion cloud réelle et l'attacher au portail que nous avons créé à l'étape précédente. Cela permettra d'automatiser le transfert et l'archivage des fichiers vidéo téléchargés dans MASV vers Backblaze.

//python
portal_id = r.json()["id"]
...

api_cloudconnect_route = '/teams/{}/cloud_connections'.format(team_id)
backblaze_connect_request = {
    "nom" : "backblazetomasv",
    "provider" : "backblazeb2",
    "autorisation" : {
        "client_id" : "0005bbxxxxxxxxxxxx",
        "client_secret" : "K000xxxxxxxxxxx",
        "destination" : "team-bucket",
    }
}

r=requests.post(
    api_uri + api_cloudconnect_route,
    headers=request_headers,
    json=backblaze_connect_request
)

print("Connexion au nuage créée {}".format(r.json()['id']))

# Nous sommes en train de créer quelque chose
# et nous devons donc évaluer si elle
# fonctionne réellement
si r.status_code == 422 :
    print(r.json()["message"])
    exit()

cloudconnect_id = r.json()['id']

Une grande partie de ce code devrait vous sembler familière. Nous commençons par créer l'objet cloudconnect route sur notre api. Suivi de quelques paramètres pour notre connexion Backblaze. Le site nom doit être modifié pour correspondre à la convention de dénomination utilisée par votre entreprise.

Le bloc d'authentification est requis et rempli avec les informations d'identification générées à l'adresse suivante Clé API Backblaze.

//python
# Attachement au portail

api_cloudconnect_attach_route = "/portals/{}".format(portal_id)

api_cloudconnect_request = portal_request
api_cloudconnect_request['active'] = True
api_cloudconnect_request['configure_cloud_connections'] = True
api_cloudconnect_request['cloud_connections'] = [{
    "id" : cloudconnect_id,
    "active" : True,
    "target_action" : "transfer"
}]

r=requests.put(
    api_uri + api_cloudconnect_attach_route,
    headers=request_headers,
    json=api_cloudconnect_request
)

print("Connexion au portail créée")

Exécuter le code avec une finale :

  $ python3 backblaze.py

Ce qui donnera le résultat suivant :

  Jeton d'authentification récupéré
  Créé le portail : VOTRE_ID_PORTAIL_ICI
  Connexion au cloud créée : VOTRE_ID_CONNECTION_CLOUD_ici
  Connexion au portail créée

Cette sortie confirme que votre script s'est exécuté avec succès et que vous avez maintenant un portail créé et attaché à un seau Backblaze B2. 

Pour une validation supplémentaire que le portail est connecté, nous pouvons naviguer vers le tableau de bord de Cloud Connect. Sous la page Connexion au nuage, vous pouvez voir que le script a créé une connexion portant le nom de backblazetomasv. Avec un vert ok ce qui signifie que tout est en ordre.

L'étape suivante sur votre liste est de transférer et d'archiver physiquement ces fichiers multimédia. Un simple glisser-déposer vers le MASV et vous pouvez partir pour la nuit, sachant que les données seront envoyées et stockées en toute sécurité.

Votre responsable (le destinataire que vous avez défini ci-dessus) recevra un e-mail lorsqu'il pourra télécharger le fichier. Backblaze aura votre/vos fichier(s) prêt(s) dans l'un de ses compartiments.

détails du seau backblaze

Vous voulez savoir comment transférer des fichiers en les déplaçant simplement dans un dossier sur votre bureau ? Consultez notre série de blogs en cours sur le déploiement de l'application TransferAgent dans Docker. Ou si vous souhaitez voir plus de ce que vous pouvez faire avec notre API, consultez notre page Docs de développement ici.

Prêt à essayer le MASV ?

Inscrivez-vous et bénéficiez de 100 Go de transferts sur nous.