Я по глупости использовал Dupemerge, чтобы превратить все мои дубликаты в жесткие ссылки. Теперь Windows XP работает неправильно, например, проводник не запускается.

Существует ли утилита, которая перебирает файловую систему в поисках жестких ссылок, копирует файл, удаляет исходную ссылку и переименовывает копию, сохраняя оригинальные атрибуты и имя?

8 ответов8

1

SameFiles Assistant 3.1 может работать:

Same Files Assistant - утилита для управления жесткими ссылками.

В частности, есть одна особенность:

  • Вы можете откатить жесткие ссылки на обычные файлы в любое время.
1

Я сомневаюсь, что есть утилита для удаления того, что было сделано. Вы можете снова искать дубликаты, проверять их количество ссылок и атрибуты (или, возможно, Dupemerge может помочь идентифицировать жесткие ссылки на одни и те же файлы) и выполнять копирование вручную. Это может по крайней мере помочь вам выяснить, являются ли жесткие ссылки причиной проблем.

1
  • Поскольку вы преобразовали их в жесткие ссылки, вам может повезти, и они все равно могут отображаться как дубликаты, используя что-то вроде DoubleKiller.

  • В любом случае, я сомневаюсь, что есть полезность для этой конкретной задачи.

Если ничего не помогает, я рекомендую переустановить ...

1

для исправления операционной системы используйте проверку системных файлов:

вставьте установочный компакт-диск windows xp

нажмите CTRL + ALT + DEL, чтобы открыть диспетчер задач, перейдите в Файл> Выполнить (Новая задача) и введите sfc /scannow и нажмите OK.

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

1

Обновить.

Вещи, которые не работали:

  1. Я не нашел ни одного приятного инструмента для отмены жестких ссылок (т. Е. Идентификаторов жестких ссылок, скопировать файл, удалить жесткую ссылку, переименовать копию в имя жесткой ссылки).
  2. Запустил chkdsk в консоли восстановления (после распаковки всех файлов)
  3. Мой системный диск Lenovo не позволил бы мне переустановить Windows XP Home, а программа Lenovo Rescue and Recovery не переустановила Windows
  4. копирование (во 2-й раздел) и обратно не помогло

Что я сделал:

  1. скопировал мой диск C: в другой раздел в каталоге "\c-drive-2009Nov4, используя Richcopy

  2. Возможно, я установил новый больший диск, создав новый раздел на том же диске, что и мой старый раздел C:. Затем я скопировал, используя держатель USB, со своего старого c: на новый раздел C: на новом диске. Затем я переместил данные и установил их в новый большой раздел данных, оставив системный раздел c: 70 ГБ на внешнем быстром кольце жесткого диска. Так что я просто сделал это снова, используя live-загрузку linux GParted, чтобы скопировать мой раздел с мая на мой раздел.

  3. Затем я использовал копию, которую я сделал с моего нынешнего диска C, чтобы вернуть любые простые файлы, которые мне нужны, например, обновленные файлы BAT, и переустановил все более новые программы.

  4. Я использовал FEBE для резервного копирования своего профиля Firefox, поэтому я использовал резервную копию для сброса настроек FF, в Windows и в Ubuntu, которые я установил в другом разделе. Ubuntu - это то, как у меня все еще был веб-доступ и какая-то утилита. Работал довольно хорошо, даже если застрял на медленной части HD.

Потери: некоторые "бесплатные" программы, которые я не могу перерегистрировать, некоторые настройки программы.

0

Я написал Perl-скрипт, который идентифицирует все обычные файлы, которые являются жесткими ссылками на одни и те же данные. Скрипт отлично работает на UNIX и Cygwin. Я не тестировал его со Strawberry Perl или любым другим портом Windows для Perl, но я решил поделиться этим в любом случае. В Windows (Cygwin) я бы открыл терминал и сделал ./list-dup-hard-links /cygdrive/c/ .

#!/usr/bin/perl
#
# NAME
#
#   list-dup-hard-links - list regular file names pointing to the same inode
#
# SYNOPSIS
#
#   list-dup-hard-links DIRECTORY
#
# DESCRIPTION
#
#   For each inode that is referred to by more than one regular file, print
#   the inode number and the list of corresponding files.
#
# AUTHOR
#
#   Peter John Acklam <pjacklam@online.no>

use strict;                             # restrict unsafe constructs
use warnings;                           # control optional warnings
use File::Find;                         # traverse a file tree

if (@ARGV != 1) {
    die "Usage: $0 DIRECTORY\n";
}

my $start_dir = shift;                  # starting directory
my $start_dev = (stat $start_dir)[0];   # device number of where we start
my %inum2files;                         # map each inode number to file(s)

sub wanted {
    return if -l;                       # skip symlinks
    my @fileinfo = stat();              # get file info

    if (-d _) {                         # if a directory
        my $this_dev = $fileinfo[0];    # get device number
        if ($this_dev != $start_dev) {  # if we crossed a device boundary
            $File::Find::prune = 1;     #   mark directory for pruning
            return;                     #   and return
        }
    }

    return unless -f _;                 # continue only if a regular file

    my $inum = $fileinfo[1];            # get inode number
    push @{ $inum2files{$inum} },       # append this file to the list of
      $File::Find::name;                #   all files with this inode number
}

find(\&wanted, $start_dir);             # traverse the file tree

while (my ($inum, $files) = each %inum2files) {
    next if @$files < 2;                # skip non-duplicates

    print "\nInode number: $inum\n\n"   # print header
      or die "$0: print failed: $!\n";

    for my $file (@$files) {
        print "    $file\n"             # print file name
          or die "$0: print failed: $!\n";
    }
}
0

Попробуйте Hard Link Magic, это может помочь.

Также у Microsoft Junction есть возможность рекурсивного обхода каталогов и списка / удаления точек соединения.

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

0

В Unix жесткие ссылки на один файл ссылаются на один и тот же "номер инода". Функция "stat" возвращает свойства файла, такие как размер, режим, дата изменения, дата изменения, номер индекса, ..., но возвращает номер индекса "0" для любого файла в Windows. Используйте perl Win32::IdentifyFile (CPAN), чтобы получить файл локализации диска. Жесткие ссылки "ссылки" на тот же диск "локализация".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .