Namespaces
Variants

std::filesystem:: copy_options

From cppreference.net
Definido en el encabezado <filesystem>
enum class copy_options {

none = /* unspecified */ ,
skip_existing = /* unspecified */ ,
overwrite_existing = /* unspecified */ ,
update_existing = /* unspecified */ ,
recursive = /* unspecified */ ,
copy_symlinks = /* unspecified */ ,
skip_symlinks = /* unspecified */ ,
directories_only = /* unspecified */ ,
create_symlinks = /* unspecified */ ,
create_hard_links = /* unspecified */

} ;
(desde C++17)

Este tipo representa las opciones disponibles que controlan el comportamiento de la copy() y la copy_file() función.

copy_options satisface los requisitos de BitmaskType (lo que significa que los operadores bit a bit operator & , operator | , operator ^ , operator~ , operator & = , operator | = , y operator ^ = están definidos para este tipo). none representa la máscara de bits vacía; cada otro enumerador representa un elemento de máscara de bits distinto.

Constantes de miembro

A lo sumo, una opción de copia en cada uno de los siguientes grupos de opciones puede estar presente; de lo contrario, el comportamiento de las funciones de copia es indefinido.

Constante de miembro Significado
Opciones que controlan copy_file() cuando el archivo ya existe
none Reportar un error (comportamiento predeterminado).
skip_existing Mantener el archivo existente, sin reportar un error.
overwrite_existing Reemplazar el archivo existente.
update_existing Reemplazar el archivo existente solo si es más antiguo que el archivo que se está copiando.
Opciones que controlan los efectos de copy() en subdirectorios
none Omitir subdirectorios (comportamiento predeterminado).
recursive Copiar recursivamente subdirectorios y su contenido.
Opciones que controlan los efectos de copy() en enlaces simbólicos
none Seguir enlaces simbólicos (comportamiento predeterminado).
copy_symlinks Copiar enlaces simbólicos como enlaces simbólicos, no como los archivos a los que apuntan.
skip_symlinks Ignorar enlaces simbólicos.
Opciones que controlan el tipo de copia que realiza copy()
none Copiar contenido de archivos (comportamiento predeterminado).
directories_only Copiar la estructura de directorios, pero no copiar ningún archivo que no sea directorio.
create_symlinks En lugar de crear copias de archivos, crear enlaces simbólicos que apunten a los originales. Nota: la ruta de origen debe ser una ruta absoluta a menos que la ruta de destino esté en el directorio actual.
create_hard_links En lugar de crear copias de archivos, crear enlaces físicos que resuelvan a los mismos archivos que los originales.

Ejemplo

#include <cstdlib>
#include <filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
    fs::create_directories("sandbox/dir/subdir");
    std::ofstream("sandbox/file1.txt").put('a');
    fs::copy("sandbox/file1.txt", "sandbox/file2.txt"); // copiar archivo
    fs::copy("sandbox/dir", "sandbox/dir2"); // copiar directorio (no recursivo)
    const auto copyOptions = fs::copy_options::update_existing
                           | fs::copy_options::recursive
                           | fs::copy_options::directories_only
                           ;
    fs::copy("sandbox", "sandbox_copy", copyOptions); 
    static_cast<void>(std::system("tree"));
    fs::remove_all("sandbox");
    fs::remove_all("sandbox_copy");
}

Salida posible:

.
├── sandbox
│   ├── dir
│   │   └── subdir
│   ├── dir2
│   ├── file1.txt
│   └── file2.txt
└── sandbox_copy
    ├── dir
    │   └── subdir
    └── dir2
8 directorios, 2 archivos

Véase también

(C++17)
copia archivos o directorios
(función)
(C++17)
copia contenidos de archivos
(función)