Guide

Nouvelles mises à jour et améliorations de Roundfleet.

Avis important

Les exemples de code et scripts fournis dans ces tutoriels sont uniquement à des fins éducatives. Roundfleet n'est pas responsable des problèmes, dommages ou vulnérabilités de sécurité qui pourraient survenir lors de l'utilisation, modification ou implémentation de ces exemples. Toujours vérifier et tester le code dans un environnement sécurisé avant de l'utiliser dans des systèmes de production.

Gestion d'Utilitaire de Disque d'Entreprise sur macOS

Gérez le stockage et les opérations de disque sur vos appareils Roundfleet en utilisant des commandes diskutil avancées et des outils de gestion de stockage d'entreprise. Ce tutoriel couvre la gestion de disque, la sécurité de stockage, la surveillance de conformité et la gestion du cycle de vie de stockage d'entreprise.

Comprendre la Gestion de Disque macOS

macOS fournit plusieurs outils en ligne de commande pour la gestion de disque et de stockage :

  • diskutil - Utilitaire de disque principal pour la gestion de volumes et partitions
  • df - Afficher l'utilisation d'espace disque du système de fichiers
  • du - Afficher l'utilisation d'espace répertoire
  • fsck - Utilitaire de vérification et réparation du système de fichiers
  • APFS - Système de fichiers Apple avec fonctionnalités avancées

Opérations de Disque de Base

Lister Tous les Disques

#!/bin/bash

# Liste de disques de base
diskutil list

echo "Inventaire de disques terminé avec succès"

Informations de Disque Améliorées

#!/bin/bash

# Informations de disque améliorées avec analyse détaillée
get_comprehensive_disk_info() {
    echo "=== Analyse Complète de Disque ==="
    
    # Liste de disques de base
    echo "Inventaire de Disques :"
    diskutil list
    
    echo -e "\nRésumé d'Utilisation de Disque :"
    df -h
    
    echo -e "\nInformations de Conteneur APFS :"
    diskutil apfs list
    
    echo -e "\nInformations de Disque Physique :"
    system_profiler SPStorageDataType
    
    echo -e "\nStatut SMART :"
    for disk in $(diskutil list | grep "^/dev/disk[0-9]" | awk '{print $1}'); do
        echo "Statut SMART pour $disk :"
        smartctl -H "$disk" 2>/dev/null || echo "  Données SMART non disponibles"
    done
}

# Exécuter l'analyse complète
get_comprehensive_disk_info

Catégories de Gestion de Stockage

Classifications de Types de Stockage

#!/bin/bash

# Catégories de stockage d'entreprise pour gestion et application de politiques
declare -A STORAGE_CATEGORIES=(
    ["systeme_critique"]="Volumes système, partitions de démarrage, partitions de récupération"
    ["donnees_utilisateur"]="Répertoires home utilisateur, documents personnels, données d'application"
    ["stockage_application"]="Binaires d'application, frameworks, bibliothèques système"
    ["espace_developpement"]="Environnements de développement, code source, artefacts de build"
    ["contenu_media"]="Vidéos, images, fichiers audio, ressources créatives"
    ["archives_sauvegarde"]="Time Machine, sauvegardes système, stockage d'archives"
    ["cache_temporaire"]="Fichiers cache, données temporaires, journaux système"
    ["volumes_securite"]="Volumes chiffrés, conteneurs sécurisés, stockage de clés"
    ["stockage_reseau"]="Lecteurs réseau montés, stockage cloud, volumes distants"
    ["peripheriques_externes"]="Clés USB, disques durs externes, stockage amovible"
)

# Niveaux de risque de stockage
declare -A RISK_LEVELS=(
    ["systeme_critique"]="critique"
    ["donnees_utilisateur"]="eleve"
    ["stockage_application"]="moyen"
    ["espace_developpement"]="moyen"
    ["contenu_media"]="faible"
    ["archives_sauvegarde"]="eleve"
    ["cache_temporaire"]="faible"
    ["volumes_securite"]="critique"
    ["stockage_reseau"]="moyen"
    ["peripheriques_externes"]="eleve"
)

# Priorités de gestion
declare -A MANAGEMENT_PRIORITIES=(
    ["systeme_critique"]="protection_maximale"
    ["donnees_utilisateur"]="protection_elevee"
    ["stockage_application"]="protection_standard"
    ["espace_developpement"]="protection_standard"
    ["contenu_media"]="protection_basique"
    ["archives_sauvegarde"]="protection_maximale"
    ["cache_temporaire"]="priorite_nettoyage"
    ["volumes_securite"]="protection_maximale"
    ["stockage_reseau"]="priorite_surveillance"
    ["peripheriques_externes"]="verification_securite"
)

print_storage_categories() {
    echo "=== Catégories de Gestion de Stockage ==="
    for category in "${!STORAGE_CATEGORIES[@]}"; do
        echo "Catégorie : $category"
        echo "  Description : ${STORAGE_CATEGORIES[$category]}"
        echo "  Niveau de Risque : ${RISK_LEVELS[$category]}"
        echo "  Priorité de Gestion : ${MANAGEMENT_PRIORITIES[$category]}"
        echo ""
    done
}

# Afficher les catégories disponibles
print_storage_categories

Politiques de Gestion de Disque

Moteur de Politique de Stockage

#!/bin/bash

# Politiques de gestion de stockage pour différentes exigences organisationnelles
declare -A STORAGE_POLICIES=(
    ["entreprise_standard"]="Stockage d'entreprise standard avec sauvegarde et surveillance"
    ["securite_elevee_financiere"]="Stockage haute sécurité pour données financières et sensibles"
    ["flux_creatif"]="Optimisé pour équipes créatives avec gros fichiers média"
    ["environnement_developpement"]="Axé développement avec contrôle de version et optimisation de build"
    ["conformite_stricte"]="Conformité stricte avec exigences de rétention et audit des données"
    ["optimise_performance"]="Axé performance avec optimisation SSD et mise en cache"
    ["efficace_cout"]="Stockage rentable avec hiérarchisation intelligente et nettoyage"
)

# Configurations de politique
get_storage_policy() {
    local policy_type="$1"
    
    case "$policy_type" in
        "entreprise_standard")
            cat << EOF
{
    "chiffrement_requis": true,
    "frequence_sauvegarde": "quotidienne",
    "periode_retention": "90_jours",
    "compression_activee": true,
    "deduplication": true,
    "niveau_surveillance": "standard",
    "analyse_securite": true,
    "nettoyage_automatique": false,
    "optimisation_performance": "equilibree",
    "cadres_conformite": ["iso27001"],
    "surveillance_sante_disque": true,
    "quotas_stockage": {
        "donnees_utilisateur": "100GB",
        "stockage_application": "50GB",
        "cache_temporaire": "10GB"
    }
}
EOF
            ;;
        "securite_elevee_financiere")
            cat << EOF
{
    "chiffrement_requis": true,
    "niveau_chiffrement": "aes256",
    "frequence_sauvegarde": "continue",
    "periode_retention": "2555_jours",
    "compression_activee": false,
    "deduplication": false,
    "niveau_surveillance": "complet",
    "analyse_securite": true,
    "nettoyage_automatique": false,
    "optimisation_performance": "securite_prioritaire",
    "cadres_conformite": ["sox", "pci_dss", "nist"],
    "surveillance_sante_disque": true,
    "sauvegardes_immuables": true,
    "journalisation_acces": "detaillee",
    "verification_integrite": "continue",
    "quotas_stockage": {
        "donnees_utilisateur": "50GB",
        "stockage_application": "25GB",
        "cache_temporaire": "5GB",
        "journaux_audit": "illimite"
    }
}
EOF
            ;;
        "flux_creatif")
            cat << EOF
{
    "chiffrement_requis": false,
    "frequence_sauvegarde": "basee_projet",
    "periode_retention": "365_jours",
    "compression_activee": false,
    "deduplication": false,
    "niveau_surveillance": "performance",
    "analyse_securite": false,
    "nettoyage_automatique": true,
    "optimisation_performance": "vitesse_prioritaire",
    "cadres_conformite": ["confidentialite_client"],
    "surveillance_sante_disque": true,
    "optimisation_gros_fichiers": true,
    "acceleration_cache": true,
    "quotas_stockage": {
        "donnees_utilisateur": "500GB",
        "contenu_media": "2TB",
        "archives_projet": "1TB",
        "cache_temporaire": "100GB"
    }
}
EOF
            ;;
        *)
            echo "Politique de stockage inconnue : $policy_type"
            return 1
            ;;
    esac
}

# Appliquer une politique de stockage
apply_storage_policy() {
    local policy="$1"
    local config_file="/tmp/politique_stockage.json"
    
    echo "Application de la politique de stockage : $policy"
    
    get_storage_policy "$policy" > "$config_file"
    
    if [[ ! -f "$config_file" ]]; then
        echo "❌ Échec de génération de la configuration de politique"
        return 1
    fi
    
    echo "✅ Politique de stockage appliquée avec succès"
    echo "Configuration : $config_file"
    
    # Afficher les paramètres clés de la politique
    echo "=== Résumé de Politique ==="
    echo "Chiffrement Requis : $(jq -r '.chiffrement_requis' "$config_file")"
    echo "Fréquence Sauvegarde : $(jq -r '.frequence_sauvegarde' "$config_file")"
    echo "Période Rétention : $(jq -r '.periode_retention' "$config_file")"
    echo "Niveau Surveillance : $(jq -r '.niveau_surveillance' "$config_file")"
    echo "Optimisation Performance : $(jq -r '.optimisation_performance' "$config_file")"
    
    return 0
}

Opérations de Disque Avancées

Effacement Sécurisé de Disque

#!/bin/bash

# Effacement sécurisé de disque amélioré avec vérification
secure_erase_volume() {
    local identifier="$1"
    local security_level="$2"
    local new_name="$3"
    local filesystem_type="${4:-APFS}"
    
    echo "=== Effacement Sécurisé de Volume ==="
    echo "Cible : $identifier"
    echo "Niveau de Sécurité : $security_level"
    echo "Nouveau Nom : $new_name"
    echo "Système de Fichiers : $filesystem_type"
    
    # Vérifier que le disque existe
    if ! diskutil info "$identifier" &>/dev/null; then
        echo "❌ Erreur : Identifiant de disque '$identifier' non trouvé"
        return 1
    fi
    
    # Obtenir les informations de disque avant effacement
    local disk_info
    disk_info=$(diskutil info "$identifier")
    echo "Informations de Disque :"
    echo "$disk_info"
    
    # Invite de confirmation
    echo ""
    echo "⚠️  ATTENTION : Ceci effacera définitivement toutes les données sur $identifier"
    echo "Volume actuel : $(echo "$disk_info" | grep "Volume Name:" | awk -F': ' '{print $2}')"
    echo "Taille : $(echo "$disk_info" | grep "Disk Size:" | awk -F': ' '{print $2}')"
    
    read -p "Tapez 'CONFIRMER' pour procéder à l'effacement : " confirmation
    if [[ "$confirmation" != "CONFIRMER" ]]; then
        echo "❌ Opération annulée par l'utilisateur"
        return 1
    fi
    
    # Effectuer l'effacement sécurisé basé sur le niveau de sécurité
    case "$security_level" in
        "basique")
            echo "Effacement basique en cours..."
            diskutil eraseVolume "$filesystem_type" "$new_name" "$identifier"
            ;;
        "securise")
            echo "Effacement sécurisé en cours (DoD 5220.22-M)..."
            diskutil secureErase freespace 3 "$identifier"
            diskutil eraseVolume "$filesystem_type" "$new_name" "$identifier"
            ;;
        "militaire")
            echo "Effacement niveau militaire en cours (7 passes)..."
            diskutil secureErase freespace 4 "$identifier"
            diskutil eraseVolume "$filesystem_type" "$new_name" "$identifier"
            ;;
        *)
            echo "❌ Niveau de sécurité inconnu : $security_level"
            return 1
            ;;
    esac
    
    # Vérifier la completion de l'effacement
    if diskutil info "$identifier" | grep -q "Volume Name.*$new_name"; then
        echo "✅ Effacement sécurisé terminé avec succès"
        echo "Nouveau volume : $new_name"
        echo "Système de fichiers : $filesystem_type"
        
        # Journaliser l'opération
        audit_log "Effacement sécurisé terminé : $identifier -> $new_name (Sécurité : $security_level)"
        
        return 0
    else
        echo "❌ Échec de vérification d'effacement"
        return 1
    fi
}

# Exemple d'utilisation
# secure_erase_volume "disk2s1" "securise" "VolumeNettoyé" "APFS"

Système de Gestion de Stockage d'Entreprise

#!/bin/bash

# Système de Gestion de Stockage d'Entreprise Roundfleet
# Gestion complète de disque et stockage

# Configuration
CONFIG_DIR="/etc/roundfleet/stockage"
LOG_FILE="/var/log/roundfleet_gestion_stockage.log"
DATA_DIR="/var/data/roundfleet/stockage"
REPORTS_DIR="/var/reports/roundfleet/stockage"
AUDIT_LOG="/var/log/roundfleet_audit_stockage.log"
BACKUP_DIR="/var/backups/roundfleet/stockage"

# Créer les répertoires requis
create_directories() {
    local directories=("$CONFIG_DIR" "$DATA_DIR" "$REPORTS_DIR" "$BACKUP_DIR")
    
    for dir in "${directories[@]}"; do
        if [[ ! -d "$dir" ]]; then
            sudo mkdir -p "$dir"
            sudo chmod 755 "$dir"
        fi
    done
}

# Fonctions de journalisation
log_action() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] $1" | tee -a "$LOG_FILE"
}

log_error() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') [ERREUR] $1" | tee -a "$LOG_FILE" >&2
}

audit_log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') [AUDIT] $1" | tee -a "$AUDIT_LOG"
}

# Gestion d'inventaire de stockage
initialize_storage_database() {
    local db_file="$DATA_DIR/inventaire_stockage.json"
    
    if [[ ! -f "$db_file" ]]; then
        cat > "$db_file" << EOF
{
    "version": "1.0",
    "cree": "$(date -Iseconds)",
    "peripheriques_stockage": {},
    "configurations_volume": {},
    "surveillance_sante": {},
    "metriques_performance": {},
    "evaluations_securite": {}
}
EOF
        log_action "Base de données de stockage initialisée : $db_file"
    fi
}

# Découverte complète de stockage
discover_storage_infrastructure() {
    local discovery_file="$DATA_DIR/decouverte_stockage_$(date +%Y%m%d_%H%M%S).json"
    
    log_action "Début de découverte complète d'infrastructure de stockage"
    
    echo "=== Découverte d'Infrastructure de Stockage ==="
    
    # Périphériques de stockage physiques
    echo "Découverte des périphériques de stockage physiques..."
    local physical_devices
    physical_devices=$(system_profiler SPStorageDataType -json)
    
    # Volumes et partitions logiques
    echo "Analyse des volumes logiques..."
    local logical_volumes
    logical_volumes=$(diskutil list -plist | plutil -convert json -o -)
    
    # Conteneurs et volumes APFS
    echo "Examen des conteneurs APFS..."
    local apfs_containers
    apfs_containers=$(diskutil apfs list -plist | plutil -convert json -o -)
    
    # Volumes montés réseau
    echo "Vérification des volumes réseau..."
    local network_volumes
    network_volumes=$(mount | grep -E "(nfs|smb|afp)" | jq -R . | jq -s .)
    
    # Périphériques externes
    echo "Détection des périphériques externes..."
    local external_devices
    external_devices=$(diskutil list external -plist | plutil -convert json -o -)
    
    # Statut de chiffrement
    echo "Évaluation du statut de chiffrement..."
    local encryption_status=()
    while IFS= read -r volume; do
        if [[ -n "$volume" ]]; then
            local encrypted="false"
            if diskutil info "$volume" | grep -q "FileVault.*Yes"; then
                encrypted="true"
            fi
            encryption_status+=("{\"volume\": \"$volume\", \"chiffre\": $encrypted}")
        fi
    done <<< "$(diskutil list | grep -E "^\s+[0-9]+:" | awk '{print $NF}')"
    
    # Générer rapport de découverte complet
    cat > "$discovery_file" << EOF
{
    "horodatage_decouverte": "$(date -Iseconds)",
    "nom_hote": "$(hostname)",
    "stockage_physique": $physical_devices,
    "volumes_logiques": $logical_volumes,
    "conteneurs_apfs": $apfs_containers,
    "volumes_reseau": $network_volumes,
    "peripheriques_externes": $external_devices,
    "statut_chiffrement": [$(IFS=,; echo "${encryption_status[*]}")],
    "info_systeme": {
        "version_os": "$(sw_vers -productVersion)",
        "stockage_total": "$(df -h / | tail -1 | awk '{print $2}')",
        "stockage_disponible": "$(df -h / | tail -1 | awk '{print $4}')"
    }
}
EOF
    
    log_action "Découverte de stockage terminée : $discovery_file"
    
    # Afficher le résumé
    echo ""
    echo "Résumé de Découverte :"
    echo "  Périphériques Physiques : $(echo "$physical_devices" | jq '.SPStorageDataType | length' 2>/dev/null || echo "0")"
    echo "  Volumes Logiques : $(echo "$logical_volumes" | jq '.AllDisks | length' 2>/dev/null || echo "0")"
    echo "  Conteneurs APFS : $(echo "$apfs_containers" | jq '.Containers | length' 2>/dev/null || echo "0")"
    echo "  Volumes Réseau : $(echo "$network_volumes" | jq '. | length' 2>/dev/null || echo "0")"
    echo "  Périphériques Externes : $(echo "$external_devices" | jq '.AllDisks | length' 2>/dev/null || echo "0")"
    echo "  Rapport de Découverte : $discovery_file"
    
    return 0
}

# Surveillance de santé de volume
monitor_volume_health() {
    local identifier="$1"
    local health_report="/tmp/sante_volume_$(date +%Y%m%d_%H%M%S).json"
    
    echo "=== Surveillance de Santé de Volume ==="
    echo "Volume Cible : $identifier"
    
    # Initialiser le rapport de santé
    cat > "$health_report" << EOF
{
    "identifiant_volume": "$identifier",
    "horodatage_analyse": "$(date -Iseconds)",
    "nom_hote": "$(hostname)",
    "verifications_sante": {}
}
EOF
    
    # Vérification de volume
    echo "Exécution de vérification de volume..."
    local verify_output
    verify_output=$(diskutil verifyVolume "$identifier" 2>&1)
    local verify_status=$?
    
    # Analyser les résultats de vérification
    local verification_passed=false
    if [[ $verify_status -eq 0 ]] && echo "$verify_output" | grep -q "appears to be OK"; then
        verification_passed=true
    fi
    
    # Vérification statut SMART (si supporté)
    echo "Vérification du statut SMART..."
    local smart_status="inconnu"
    local physical_disk
    physical_disk=$(diskutil info "$identifier" | grep "Part of Whole" | awk '{print $4}')
    
    if [[ -n "$physical_disk" ]]; then
        if smartctl -H "$physical_disk" 2>/dev/null | grep -q "PASSED"; then
            smart_status="reussi"
        elif smartctl -H "$physical_disk" 2>/dev/null | grep -q "FAILED"; then
            smart_status="echec"
        fi
    fi
    
    # Analyse d'utilisation de disque
    echo "Analyse d'utilisation de disque..."
    local disk_usage
    disk_usage=$(df -h "$identifier" 2>/dev/null | tail -1)
    local usage_percent
    usage_percent=$(echo "$disk_usage" | awk '{print $5}' | tr -d '%')
    
    # Test de performance
    echo "Exécution de test de performance..."
    local write_speed read_speed
    local test_file="/Volumes/$(diskutil info "$identifier" | grep "Mount Point" | awk -F': ' '{print $2}' | xargs)/test_vitesse_$$"
    
    if [[ -w "$(dirname "$test_file")" ]]; then
        # Test d'écriture (10MB)
        write_speed=$(dd if=/dev/zero of="$test_file" bs=1m count=10 2>&1 | grep "bytes/sec" | awk '{print $(NF-1)}')
        
        # Test de lecture
        read_speed=$(dd if="$test_file" of=/dev/null bs=1m 2>&1 | grep "bytes/sec" | awk '{print $(NF-1)}')
        
        # Nettoyage
        rm -f "$test_file"
    else
        write_speed="non_disponible"
        read_speed="non_disponible"
    fi
    
    # Mettre à jour le rapport de santé
    jq --argjson verification "$verification_passed" \
       --arg smart_status "$smart_status" \
       --argjson usage_percent "${usage_percent:-0}" \
       --arg write_speed "$write_speed" \
       --arg read_speed "$read_speed" \
       '.verifications_sante = {
          "verification_systeme_fichiers": $verification,
          "statut_smart": $smart_status,
          "pourcentage_utilisation_disque": $usage_percent,
          "vitesse_ecriture_mbps": $write_speed,
          "vitesse_lecture_mbps": $read_speed
        }' "$health_report" > "${health_report}.tmp" && mv "${health_report}.tmp" "$health_report"
    
    # Évaluation de santé
    local health_score=100
    local issues=()
    
    if [[ "$verification_passed" != "true" ]]; then
        ((health_score -= 30))
        issues+=("corruption_systeme_fichiers")
    fi
    
    if [[ "$smart_status" == "echec" ]]; then
        ((health_score -= 50))
        issues+=("echec_smart")
    fi
    
    if [[ ${usage_percent:-0} -gt 90 ]]; then
        ((health_score -= 20))
        issues+=("espace_disque_critique")
    elif [[ ${usage_percent:-0} -gt 80 ]]; then
        ((health_score -= 10))
        issues+=("alerte_espace_disque")
    fi
    
    # Ajouter score de santé et problèmes au rapport
    jq --argjson health_score "$health_score" \
       --argjson issues "$(printf '%s\n' "${issues[@]}" | jq -R . | jq -s .)" \
       '.evaluation_sante = {
          "score_global": $health_score,
          "problemes_detectes": $issues,
          "recommandations": []
        }' "$health_report" > "${health_report}.tmp" && mv "${health_report}.tmp" "$health_report"
    
    # Afficher les résultats
    echo ""
    echo "Résultats d'Évaluation de Santé :"
    echo "  Score de Santé Global : $health_score/100"
    echo "  Vérification Système de Fichiers : $([ "$verification_passed" = "true" ] && echo "✅ RÉUSSI" || echo "❌ ÉCHEC")"
    echo "  Statut SMART : $smart_status"
    echo "  Utilisation Disque : ${usage_percent:-0}%"
    echo "  Vitesse Écriture : $write_speed"
    echo "  Vitesse Lecture : $read_speed"
    
    if [[ ${#issues[@]} -gt 0 ]]; then
        echo "  Problèmes Détectés :"
        for issue in "${issues[@]}"; do
            echo "    - $issue"
        done
    else
        echo "  ✅ Aucun problème détecté"
    fi
    
    echo "  Rapport de Santé : $health_report"
    
    # Journaliser la vérification de santé
    audit_log "Vérification santé volume terminée : $identifier (Score : $health_score/100)"
    
    return 0
}

# Fonction principale avec routage de commandes
main() {
    local command="$1"
    shift
    
    # Initialiser
    create_directories
    initialize_storage_database
    
    case "$command" in
        "lister")
            # Liste de disques améliorée
            get_comprehensive_disk_info
            ;;
        "verification_sante")
            monitor_volume_health "$@"
            ;;
        "effacement_securise")
            secure_erase_volume "$@"
            ;;
        "decouvrir")
            discover_storage_infrastructure
            ;;
        "appliquer_politique")
            apply_storage_policy "$@"
            ;;
        "afficher_categories")
            print_storage_categories
            ;;
        "afficher_politiques")
            for policy in entreprise_standard securite_elevee_financiere flux_creatif environnement_developpement conformite_stricte optimise_performance efficace_cout; do
                echo "Politique : $policy"
                get_storage_policy "$policy" | jq .
                echo ""
            done
            ;;
        *)
            echo "Système de Gestion de Stockage d'Entreprise Roundfleet"
            echo "Utilisation : $0 <commande> [options]"
            echo ""
            echo "Commandes :"
            echo "  lister                                       - Liste et analyse de disques améliorées"
            echo "  verification_sante <identifiant>             - Surveillance complète de santé de volume"
            echo "  effacement_securise <id> <niveau> <nom>      - Effacement sécurisé de volume"
            echo "  decouvrir                                    - Découverte d'infrastructure de stockage"
            echo "  appliquer_politique <politique>              - Appliquer politique de gestion de stockage"
            echo "  afficher_categories                          - Afficher catégories de stockage"
            echo "  afficher_politiques                          - Afficher politiques de stockage"
            echo ""
            echo "Exemples :"
            echo "  $0 lister"
            echo "  $0 verification_sante disk1s1"
            echo "  $0 effacement_securise disk2s1 securise DisqueNettoye"
            echo "  $0 decouvrir"
            echo "  $0 appliquer_politique entreprise_standard"
            ;;
    esac
}

# Exécuter la fonction principale avec tous les arguments
main "$@"

Configuration de Déploiement en Flotte

Exemple de Configuration de Flotte

{
    "nom_flotte": "Stockage d'Entreprise Roundfleet",
    "date_deploiement": "2025-07-07",
    "hotes": [
        "mac-poste-01.entreprise.com",
        "mac-serveur-01.entreprise.com",
        "mac-dev-01.entreprise.com"
    ],
    "politiques_stockage": {
        "defaut": "entreprise_standard",
        "hotes_securises": "securite_elevee_financiere",
        "hotes_creatifs": "flux_creatif"
    },
    "planning_surveillance": {
        "verifications_sante": "quotidiennes",
        "surveillance_performance": "hebdomadaire",
        "audits_securite": "mensuels"
    }
}

Exemple de Liste de Volumes pour Opérations en Masse

# Liste de Volumes pour Opérations en Masse
# Format : identifiant|nom|systeme_fichiers
disk1s1|Macintosh HD|APFS
disk2s1|Volume Données|APFS
disk3s1|Disque Sauvegarde|APFS
disk4s1|Stockage Externe|ExFAT

Considérations de Sécurité

Sécurité de Stockage

  • Application de Chiffrement - S'assurer que tous les volumes sensibles sont chiffrés avec FileVault
  • Effacement Sécurisé - Plusieurs niveaux de sécurité pour destruction appropriée des données
  • Contrôles d'Accès - Surveiller et contrôler l'accès aux ressources de stockage
  • Surveillance d'Intégrité - Vérification continue de l'intégrité du stockage
  • Détection de Menaces - Analyser l'accès non autorisé et activités suspectes

Cadre de Conformité

  • Rétention de Données - Application automatisée des politiques de rétention de données
  • Pistes d'Audit - Journalisation complète de toutes les opérations de stockage
  • Standards de Chiffrement - Conformité avec AES-256 et autres exigences de chiffrement
  • Vérification de Sauvegarde - Vérification automatisée de l'intégrité des sauvegardes
  • Récupération après Sinistre - Procédures de récupération après sinistre axées stockage

Optimisation de Performance

Performance de Stockage

  • Optimisation SSD - Activation TRIM et optimisation d'usure
  • Optimisation APFS - Défragmentation de conteneur et gestion d'instantanés
  • Gestion de Cache - Mise en cache intelligente et optimisation mémoire
  • Surveillance I/O - Surveillance en temps réel de la performance I/O de stockage
  • Détection de Goulots d'Étranglement - Détection et résolution automatisées des problèmes de performance

Guide de Dépannage

Problèmes Courants

Échecs de Vérification de Disque

  • Exécuter First Aid depuis Utilitaire de Disque
  • Démarrer depuis Mode Récupération pour réparations de volume système
  • Vérifier problèmes matériels avec Diagnostics Apple

Dégradation de Performance

  • Surveiller statut SMART pour santé du lecteur
  • Vérifier fragmentation sur anciens systèmes de fichiers
  • Vérifier espace libre adéquat (maintenir 10-15% libre)

Problèmes de Montage/Démontage

  • Vérifier processus utilisant le volume : lsof /Volumes/NomVolume
  • Forcer le démontage si nécessaire : diskutil unmount force /dev/diskXsY
  • Vérifier intégrité système de fichiers avant remontage

Commandes de Diagnostic

# Vérifier santé de disque
diskutil verifyVolume disk1s1

# Surveiller I/O de disque
iostat -d 1

# Vérifier utilisation système de fichiers
df -h

# Voir statut SMART
smartctl -a /dev/disk0

Notes Importantes

  • Sécurité des Données - Toujours sauvegarder les données critiques avant d'effectuer des opérations de disque
  • Privilèges Administratifs - La plupart des opérations de disque nécessitent un accès sudo/administrateur
  • Tests - Tester tous les scripts sur systèmes non-production avant déploiement en flotte
  • Planification de Récupération - Maintenir des lecteurs de récupération amorçables et stratégies de sauvegarde
  • Surveillance - Implémenter surveillance continue pour détection précoce de problèmes
  • Documentation - Conserver des enregistrements détaillés de toutes les configurations et changements de stockage

Related Tutorials

Gestion des Images Disque sur macOS

Apprenez à créer, gérer et déployer des images disque à partir de dossiers sur les appareils macOS en utilisant hdiutil pour l'empaquetage de données d'entreprise, la distribution et les workflows de déploiement système.

7 juil. 2025

Gestion de Stockage d'Entreprise sur macOS

Surveillez l'utilisation du disque, implémentez les politiques de stockage et optimisez les performances de stockage sur les appareils macOS avec la gestion avancée de stockage, le nettoyage automatisé et l'analytique d'entreprise pour l'infrastructure de stockage organisationnelle.

7 juil. 2025

Gestion d'Entreprise d'Ouverture de Fichiers et Dossiers sur macOS

Guide complet pour les opérations d'ouverture de fichiers et dossiers d'entreprise sur les appareils Roundfleet avec validation de sécurité, contrôle d'applications et gestion d'accès automatisée.

7 juil. 2025

Gestion d'Entreprise de Déplacement de Fichiers et Dossiers sur macOS

Guide complet pour les opérations de déplacement de fichiers et dossiers d'entreprise sur les appareils Roundfleet avec validation de sécurité, capacités de retour en arrière et gestion de relocalisation automatisée.

7 juil. 2025

Gestion des Permissions de Fichiers et Dossiers sur macOS

Apprenez à gérer les permissions de fichiers et dossiers, comprendre les modèles de propriété, configurer les contrôles d'accès et implémenter des politiques de permissions d'entreprise sur les appareils macOS à l'aide de scripts en ligne de commande.

7 juil. 2025

Gestion d'Entreprise de Copie de Fichiers et Dossiers sur macOS

Guide complet pour les opérations de copie de fichiers et dossiers d'entreprise sur les appareils Roundfleet avec validation de sécurité, vérification d'intégrité et gestion de distribution automatisée.

7 juil. 2025

Gestion Entreprise de Création de Fichiers et Dossiers sur macOS

Guide complet pour les opérations de création de fichiers et dossiers en entreprise sur les appareils Roundfleet avec gestion de modèles, contrôle des permissions et capacités de provisionnement automatisé.

7 juil. 2025

Gérer le chiffrement FileVault sur macOS

Apprenez à activer, désactiver et gérer de force le chiffrement de disque FileVault sur les appareils macOS en utilisant des scripts en ligne de commande pour la gestion de la sécurité d'entreprise.

7 juil. 2025