¿Cómo copiar carpetas en la misma unidad NTFS usando enlaces duros?

¿Cómo copiar carpetas en la misma unidad NTFS usando enlaces duros?

¿Hay alguna manera de crear enlaces duros para crear un duplicado de una carpeta en la MISMA unidad (formateada NTFS)? Estoy buscando hacer algo como esto: XCOPY E:\TEMP\SAMPLE1* E:\TEMP\SAMPLE2\ /s pero EN LUGAR de copiar los archivos y usar el espacio adicional en el disco, simplemente cree enlaces duros a los archivos.

Objetivo: solo hay un puñado de archivos que no necesitamos en la carpeta SAMPLE2 pero queremos conservarlos todos en SAMPLE1. La carpeta SAMPLE2 eventualmente se copiará a otra unidad.

NOTA: el contenido total de SAMPLE1 es de aproximadamente 400 GB (con varias subcarpetas contenidas en él) y cada uno de los archivos que vamos a excluir de SAMPLE2 ocupa aproximadamente 20-40 MB cada uno (hay muchos, más de 100 archivos, ubicados en varios subcarpetas).

Entonces, ¿hay alguna manera de hacer el equivalente de XCOPY (comando anterior), excepto usar enlaces duros, y luego eliminamos todos los archivos que no queremos en SAMPLE2 antes de copiarlos al disco externo; luego eliminando la carpeta SAMPLE2.

Respuesta1

Es un poco hack pero:

  1. Haga una copia completa regular con la GUI. Copiar/pegar, etc. Observe cómo desaparece el espacio en disco.
  2. Ejecute DupeGuru con la fuente configurada como referencia y el duplicado como "normal"
  3. Cuando el informe esté completo, haga "seleccionar todo > eliminar" y marque la opción "recrear como enlaces físicos". También puede hacer enlaces simbólicos. Deberías recuperar algo de espacio en el disco. A veces uso esto para preparar una carpeta para cargar después de eliminar muchos otros archivos en la estructura con un script.

BONIFICACIÓN: se ejecuta en Mac, Windows y Linux. ¡Lindo!https://dupeguru.voltaicideas.net/ ingrese la descripción de la imagen aquí

Respuesta2

No se necesita software de terceros. Esto se puede lograr conPotencia Shell. Aquí hay una función habilitada para canalización que toma una ruta de origen ($Path) y una ruta "espejo" ($MirrorPath). Rellena la ruta reflejada con enlaces físicos a archivos en la ruta de origen y subcarpetas para que coincidan con las subcarpetas de origen, que también se completan de forma recursiva.

Function Mirror-Path {
  Param(
    [Parameter(Mandatory,ValueFromPipeline,Position=0)]
    [String[]]
    $Path,
    [Parameter(Mandatory,Position=1)]
    [String]
    $MirrorPath
  )
  Begin{
    If ( ! ( Test-Path $MirrorPath )) {
        mkdir $MirrorPath -Force | out-null
    }
  }
  Process{ 
    ForEach ( $Target in $Path ) {
        If ( Test-Path $Target ) {
            Resolve-Path $Target | gci -File | ForEach {
                New-item -ItemType Hardlink -Path $MirrorPath -Name $_.Name -Target $_.FullName | out-null
            }
            Resolve-Path $Target | gci -Directory | ForEach {
                Mirror-Path $_.FullName ( Join-Path $MirrorPath $_.Name )
            }
        }
        Else {
            Echo "'$Target' is not a valid path."
        }
    }
  }
  End {}
}

Respuesta3

Esto es simple en teoría. Debe crear un enlace simbólico de los directorios que hará EXACTAMENTE lo que desea. Copia accesos directos que parecen y actúan como archivos reales para el usuario y los programas. Luego, puede eliminar los enlaces simbólicos que no desea, lo que solo elimina los enlaces; luego copia el resto de los "archivos" (en realidad, enlaces) como de costumbre y copiará los archivos reales.

Pero Windows está basado en GUI y no existe una solución GUI integrada para crear enlaces simbólicos. Además, el símbolo del sistema también lo hizo difícil. (Si usa Linux, es fácil y directo a través de la terminal, y algunos administradores de archivos gráficos como GNOME Commander también lo hacen fácil a través de la GUI).

Así que... para ejecutar la solución anterior, la forma "fácil" es descargar un complemento y un archivo de soporte (si es necesario; lea las notas de descarga)aquí Esto agregará opciones de enlaces simbólicos a su menú contextual. Los que desea son "Seleccionar fuente de enlace" para "copiar" el directorio, luego "Soltar como > Clonar enlace duro" para pegar. Trabaje en el directorio vinculado ya que desea eliminar archivos (enlaces) y demás. Luego, cópielo y péguelo regularmente (NO elija el enlace y suéltelo como) donde quiera y listo, ¡los accesos directos se copian como archivos!

Finalmente, elimina la carpeta vinculada y es como si nada hubiera pasado.

El complemento parece funcionar muy bien. ¡Pruébalo! ¡Solo tenga cuidado de crear SOLO enlaces físicos (sin enlaces suaves ni uniones) y asegúrese de trabajar con los enlaces y no con los archivos reales!

Ahora, para aquellos que mencionarían mklink, esto es lo que encontré mientras desarrollaba esta respuesta. Usar mklink a través del símbolo del sistema ejecutándose como administrador (busque CMD, haga clic derecho y ejecute como administrador) DEBE funcionar igual... Pero no fue así para mí (y para MUCHOS otros si busca). Se me negó el acceso incluso después de modificar los privilegios a través de secpol.msc. Parece ser un problema frecuente.

Respuesta4

Extensión de enlace de shell

Esta utilidad agrega una extensión de shell al menú contextual del Explorador de Windows, lo que permite la creación de arrastrar y soltar.enlaces duros,crucesyenlaces simbólicos. Es muy antiguo, se creó por primera vez en 1999, pero aún se está actualizando y funciona como se esperaba. Creo que esta es la solución más fácil de usar.

Imagen de ejemplo

información relacionada