Comment puis-je télécharger un fichier à partir d'Heroku bash?
J'ai couru un script ruby de Heroku bash qui génère un fichier CSV sur le serveur que je veux télécharger. J'ai essayé de le déplacer vers le dossier public de télécharger, mais cela ne fonctionne pas. J'ai compris qu'après chaque séance, dans l'Heroku bash console, les fichiers à supprimer. Est-il une commande pour la télécharger directement à partir de la Heroku bash console?
- avez-vous eu scp, ftp, sftp ou mailx commande heroku bash?
Vous devez vous connecter pour publier un commentaire.
Heroku dyno systèmes de fichiers sont éphémères, non-persistant et ne sont pas partagées entre les dynamomètres. Ainsi, lorsque vous vous
heroku run bash
, vous obtenez en fait un nouveau dyno avec un nouveau déploiement de votre application sans aucune des modifications apportées à l'éphémère des systèmes de fichiers dans d'autres dynamomètres.Si vous voulez faire quelque chose comme cela, vous devriez probablement faire tout cela dans un
heroku run bash
session ou de la totalité de la demande pour une application web s'exécutant sur Heroku qui répond avec le fichier CSV que vous voulez.Si vous parvenez à créer le fichier de
heroku run bash
, vous pouvez utiliser transfer.sh.Vous pouvez même crypter le fichier avant de le transférer.
Puis de les télécharger et de les décrypter sur la machine cible
J'ai fait la suivante:
D'abord, je suis entré à heroku bash avec cette commande:
heroku exécuter "sh"
Ensuite fait un répertoire et déplacé le fichier pour que
Avant de s'engager, git va vous demander votre nom et votre e-mail. Lui donner quelque chose de faux!
Si vous avez des fichiers de plus de 100 Mg, pousser à gitlab.
Si il ya un moyen plus facile s'il vous plaît laissez-moi savoir!
Désolé pour mon mauvais anglais.
Je suis d'accord que la plupart probablement votre besoin correspond à un changement dans l'architecture des applications, quelque chose comme un travailleur de dyno.
Mais en exécutant les étapes suivantes, vous pouvez transférer le fichier, depuis heroku one-off dyno pouvez exécuter
scp
:scp
fichier à partir d'heroku one-off dyno pour que la vm server;scp
fichier de la vm du serveur vers votre ordinateur local;Il est
heroku ps:copie
:mais j'ai cette erreur:
Peut-être que vous aurez plus de succès avec cette.
Pour les petites et rapide des transferts qui s'adapte confortablement dans le presse-papiers:
heroku run bash
cat filename
Maintenant, j'ai créé le script shell pour télécharger des fichiers à partir de git sauvegarde de pensions de titres (par exemple, l'une de mes applications.db sqlite fichier est gitignored et chaque déployer le tue)
Le git va redémarrer après la déployer et de ne pas stocker de l'environnement, vous devez effectuer les 3 premières commandes.
Ensuite, vous devez ajouter les fichiers (-f pour ignorés) et poussez-le dans repo (-f, parce que le git exigera de traction)
Heroku dyno est venu avec sftp pré-installé. J'ai essayé de git, mais a trop d'étapes (dû générer une nouvelle ssh cert et l'ajouter à github à chaque fois), donc maintenant je suis en utilisant sftp et il fonctionne très bien.
Vous aurez besoin d'avoir un autre hôte (dreamhost, hostgator, godaddy, etc) mais si vous le faites, vous pouvez:
Accepter le serveur d'empreintes digitales/hachage, puis entrez votre mot de passe.
Une fois sur le serveur, accédez au dossier que vous souhaitez télécharger (à l'aide de cd et commandes ls).
Puis utiliser la commande
put filename.csv
et il va télécharger sur votre site web hôte.De récupérer votre fichier: Utiliser un client ftp comme filezilla ou cliquer sur l'url si vous avez téléchargé dans un dossier dans le web ou le site web de chemin d'accès au dossier.
C'est formidable, car il travaille également avec plusieurs fichiers et les fichiers binaires ainsi que des fichiers texte.
Une autre manière de faire (qui n'implique pas de tout tiers server) est d'utiliser Patrick méthode mais d'abord compresser le fichier dans un format qui utilise uniquement visible ASCII charaters. Qui devrait le faire fonctionner pour n'importe quel fichier, indépendamment de toute les espaces d'inhabituel ou de codages. Je le recommande
base64
pour ce faire.Voici comment je l'ai fait:
heroku run bash
base64 <your-file>
base64
directement dans un nouveau fichier (sur un mac, je feraispbpaste | base64 --decode -o <your-file>
)Je vois que ces réponses sont beaucoup plus vieux, donc je suppose que c'est une nouvelle fonctionnalité. Pour tous ceux qui comme moi sont à la recherche d'une solution plus facile que les excellentes réponses déjà ici, Heroku a maintenant la capacité de copier des fichiers assez facilement avec la commande suivante:
heroku ps:copy <filename>
Notez que cela fonctionne avec des chemins relatifs, comme vous le souhaitez. (Testé sur un heroku-18 de la pile, le téléchargement de fichiers "chemin/vers/fichier.ext"
Pour référence: Heroku docs