Найти и; Удалять дубликаты файлов на нескольких жестких дисках сразу

Вам нужно будет получить доступ к странице администрирования маршрутизаторов и перенаправить любой порт Apache на IP-адрес вашего ПК (обычно 80). Чтобы получить доступ к вашему маршрутизатору, как правило, 192.168.1.254, если вы не отредактировали IP-адрес или не получили другую форму настройки, если вы, вероятно, не захотите этого совета.

Вам также потребуется использовать ufw, чтобы разрешить порт 80 входящий и исходящий с вашего ПК.

sudo ufw enable
sudo ufw allow 80/tcp

Это позволит вам получить доступ к вашему веб-серверу, если у вас есть ваш брандмауэр, как вы должны.

Также предлагайте, если вы откроете его в сети, чтобы сделать некоторое упрощение веб-сервер перед началом работы. Посмотрите ЗДЕСЬ

1
задан 10 November 2014 в 16:00

2 ответа

Скрипт ниже ищет дубликаты файлов в до 10 каталогов одновременно, ищет дубликаты в комбинированных каталогах.

Он должен быть значительно быстрее, чем fdupes (работает fdupes -r) и fslint; на сравнительно небольшом каталоге в 40 ГБ, локально сохраненном, для создания списка дубликатов потребовалось 5 секунд, а для fdupes и fslint потребовалось намного больше (~ 90/100 секунд). В более крупном каталоге (700 ГБ, ~ 350000 файлов) на относительно медленном внешнем USB-накопителе это заняло 90 минут. С fdupes это было бы более 200-250 минут, глядя на индикацию выполнения (что приятно, сценарий ниже не показывает прогресс), но я не дождался его полностью. Я хотел бы упомянуть, что, например, fslint предлагает дополнительные функции, которые сценарий не делает (так оно есть), поэтому сравнение строго связано с созданием списка дубликатов.

Кроме того, скорость зависит от части как быстро читается диск: я тестировал несколько носителей (ao на сетевом диске) с огромными различиями, особенно в небольших каталогах, где создание списка файлов занимает относительно большую часть работы (время).

Суть в том, что она не будет быстрой работой, и в этом случае вы можете спросить себя, не слишком ли велики каталоги.

Как это работает

Когда скрипт находит дубликаты, дубликаты перечисляются следующим образом:

Creating file list... /home/jacob/Bureaublad/test2
Creating file list... /home/jacob/Bureaublad/foto
Creating file list... /home/jacob/Bureaublad/Askubuntu
Checking for duplicates (10790 files)...
------------------------------------------------------------ 
>  found duplicate: test1.txt 2 

/home/jacob/Bureaublad/test2/test1.txt
/home/jacob/Bureaublad/test2/another directory/test1.txt
------------------------------------------------------------ 

и т. Д.

Сценарий

#!/usr/bin/env python3

import os
import sys

total_filelist = []
total_names = []

def find_files(directory):
    l = []; l2 = []
    for root, dirs, files in os.walk(directory):
        for file in files:
            l.append(file)
            l2.append(root+"/"+file)
    return (l, l2)

i = 1
while i <= 10:
    try:
        dr = (sys.argv[i])
        print("Creating file list...", dr)
        total_filelist = total_filelist+find_files(dr)[1]
        total_names = total_names+find_files(dr)[0]
        i = i+1
    except IndexError:
        break

print("Checking for duplicates ("+str(len(total_names)),"files)...")

for name in set(total_names):
    n = total_names.count(name)
    if n > 1:
        print("-"*60,"\n>  found duplicate:",
              name, n, "\n")
        for item in total_filelist:
            if item.endswith("/"+name):
                print(item)

print("-"*60, "\n")

Скопируйте его в пустой файл, сохраните его как find_dupes.py и запустите его командой:

python3 <script> <directory1> <directory2> <directory3> 

До 10 каталогов

Дополнительные параметры скрипта

It относительно просто добавить дополнительные функции; переместить дубликаты в другой каталог, например, переименовать и т. д., чтобы вы могли вручную или автоматически решить, какой файл сохранить.

Как сделать работу выполнимой

Ваши каталоги кажутся огромными. Чтобы сделать работу разумно возможной, существует еще один, более сложный способ предотвратить «удушье» системы: вместо выполнения задания на всех типах файлов (расширений) сразу вы можете сократить задание на в сочетании . Небольшой тест в каталоге из 30 000 файлов сократил время с апреля. 20 секунд (все файлы) до 0,3 секунды для одного расширения.

Чтобы заставить скрипт искать дубликаты только одного типа файла, замените раздел скрипта:

def find_files(directory):
    l = []; l2 = []
    for root, dirs, files in os.walk(directory):
        for file in files:
            l.append(file)
            l2.append(root+"/"+file)
    return (l, l2)

by:

def find_files(directory):
    l = []; l2 = []
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith(".py"): # example .py extension
                l.append(file)
                l2.append(root+"/"+file)
    return (l, l2)

Поиск существующих расширений файлов

Чтобы перечислить все существующие расширения файла в каталоге, вы можете использовать следующий скрипт:

#!/usr/bin/env python3

import sys
import os

l = []
for root, dirs, files in os.walk(sys.argv[1]):
    for f in files:
        if (
        f.startswith("."),
        f.count(".") == 0,
        f.endswith("~"),
        ) == (False, False, False):
            l.append(f[f.rfind("."):])
for item in set(l):
    print(item)

Скопируйте его в пустой файл, сохраните его как find_extensions.py и запустите его командой:

python3 <script> <diretory>

Пример:

.txt
.mp3
.odt
.py
.desktop
.sh
.ods
3
ответ дан 24 May 2018 в 02:02
  • 1
    Я собираюсь проверить это как можно скорее - спасибо – herbert 10 November 2014 в 18:28

Если вы хотите использовать очень удобный графический интерфейс, попробуйте FSlint из Software Center.

(я вижу, что @lemonsqueeze предложил это в комментариях выше).

Вот ответ, который описывает использование FSlint: https://askubuntu.com/a/472244/100356

0
ответ дан 24 May 2018 в 02:02

Другие вопросы по тегам:

Похожие вопросы: