J'ai une situation qui nécessite une solution comme l'a demandé l'affiche originale. J'enregistre un match de hockey sur mon ordinateur à un endroit et j'aimerais le regarder sur mon téléviseur à un autre endroit. Le lien entre les deux emplacements permet à la copie d'aller à environ 1,3 Mo / s et l'enregistrement vidéo à environ 1,5 Mo / s. Donc, je veux copier le fichier au début de l'enregistrement. De cette façon, mon jeu de 3 heures se copiera en 3,5 heures environ. Donc, je le copie au début de l'enregistrement et je peux commencer à le regarder 30 minutes après le début. Ensuite, je peux le regarder sans interruption, presque en temps réel. Autrement dit, tant que je peux le faire copier comme il écrit le nouveau fichier. Le problème avec des outils comme rsync et scp est qu'ils regardent la taille du fichier lorsque vous lancez la copie et une fois qu'il copie cette quantité de données, il se ferme; même si le fichier a augmenté de plus du double au cours de cette copie. Et, si, j'utilise juste rsync dans une boucle pour le copier une fois qu'il s'arrête, quand le prochain rsync termine il reconstruit le fichier cible et cela tue mon lecteur vidéo et je dois recommencer à le regarder et avancer rapidement où que je sois dans le programme quand il l'a soudainement tué. Je voulais une meilleure solution et je n'ai pas pu en trouver une, j'ai donc reconstitué ceci à la place:
dd if=2031_20160514030000.mpg |
pv --size 4653819304 |
ssh -C -c arcfour,blowfish-cbc -p 5555 myserver.com 'dd of=/media/TV/2031_20160514030000.mpg'
Alors qu'est-ce que cela fait?
Tout d'abord, j'utilise dd pour copier le fichier à mesure qu'il grandit. Étant donné que le fichier se développe plus rapidement que dd ne peut l'envoyer sur le réseau, dd ne rattrape jamais la fin du fichier. Ensuite, je le redirige vers le "visualiseur de tuyaux (pv)" et je lui donne une estimation de la taille du fichier en fonction de la taille de ces fichiers. Ce n'est pas nécessaire, mais j'aime voir un indicateur de progression. Ensuite, je redirige le flux vers ma connexion ssh. La connexion ssh utilise -C
pour la compression (pour réduire la bande passante du réseau et essayer de l'accélérer), -c arcfour,blowfish-cbc
pour le chiffrement le moins cher (encore une fois pour accélérer un peu les choses), le-p
est pour mon port de pare-feu que j'utilise à la destination, et le ssh exécute enfin la commande dd sur la cible pour recréer le fichier tel qu'il le reçoit. Je suis heureux de dire que cette solution fonctionne très bien. Je peux regarder le match de hockey pendant la création et la copie du fichier avec seulement un court délai.