Como eu crio um diretório cumulativo?

0

Vídeos e músicas no meu computador estão espalhados em 8 unidades e não sei o número de diretórios. Como faço para criar um diretório em / home / user que atualiza automaticamente os atalhos de vídeos no meu computador?

    
por kernel_panic 10.11.2014 / 17:10

2 respostas

1

Você pode executar periodicamente o script de "manutenção" abaixo para atualizar a pasta com links (por exemplo, por uma tarefa do cron ou em "Aplicativos de inicialização", veja abaixo).

O que o script faz

O script lista todos os arquivos de vídeo (por extensão) de até 10 diretórios (ou unidades) diferentes e verifica se existe um link com nome semelhante em sua pasta "library". Caso contrário, cria o link.

Embora você esteja solicitando arquivos de vídeo, dessa forma você pode manter uma "pasta de biblioteca" de qualquer tipo de documento de um determinado tipo de arquivo.

Funciona muito rápido: para atualizar de um disco quase cheio de 750GB (lento / externo), demorei apenas 4 segundos, por isso não será um grande fardo para o seu sistema.

Como usar

  • Copie o script abaixo em um arquivo vazio e salve-o como update_links.py .
  • Se necessário, defina na seção head as extensões de arquivo das quais você gostaria de criar links. Eu já configurei para:

    extensions = (".flv", ".mp4", ".mp3", ".mkv")
    

    como você mencionou em um comentário.

    Defina também o caminho para a sua pasta com os links para os vídeos:

    library = "/path/to/your/library_folder"
    
  • O script leva até 10 diretórios como argumentos. Para executá-lo, use o comando:

    python3 <script> <directory_1> <directory_2> <directory_3> <directory_4>
    

Você pode adicionar o comando a seus aplicativos de inicialização: (Dash > "Aplicativos de inicialização" > "Adicionar") ou executá-lo por um trabalho cron.

O script

#!/usr/bin/env python3

import os
import sys
import subprocess

library = "/path/to/your/library_folder"
extensions = (".flv", ".mp4", ".mp3", ".mkv")

def create_links(directory):
    for root, dirs, files in os.walk(directory):
        for name in files:
            if (name.startswith("."), name.count(".") == 0) == (False, False):
                extension = name[name.rfind("."):]
                if (extension in extensions, os.path.isfile(library+"/"+name)) == (True, False):
                    command = 'ln -s "'+root+"/"+name+'" "'+library+"/"+name+'"'
                    subprocess.Popen(["/bin/bash", "-c", command])
                else:
                    pass
            else:
                pass

i = 1
while i <= 10:
    try:
        dr = (sys.argv[i])
        create_links(dr)
        i = i+1
    except IndexError:
        break
    
por Jacob Vlijm 10.11.2014 / 20:48
0

Considere o uso de um conjunto de sindicatos usando aufs . Primeiro instale aufs-tools :

sudo apt-get install aufs-tools

Adicione uma entrada para /etc/fstab da mesma forma, substituindo os caminhos pelos valores apropriados:

none /home/user/Videos aufs br=/home/user/Videos:/media/drive1/Movies:/media/drive2/OtherStuff 0 0

Então faça:

sudo mount /home/user/Videos

~/Videos agora deve mostrar o conteúdo de todos os outros diretórios também.

    
por muru 10.11.2014 / 18:30