Eliminar contenido de / private / tmp movido en diferentes HDD

1

Tengo un Macbook Pro con 2 HD interno (HD de stock para datos y duplicador de datos + SSD en lugar de la unidad óptica, que aloja el sistema operativo). Ahora estoy tratando de optimizar esta configuración para tener en cuenta la presencia del SSD, y quiero mover la carpeta temporal del SSD (/ private / tmp) a la unidad secundaria (/ Volume / MacintoshHD / private / tmp) .

Siguiendo esto ( enlace ), esto es lo que hice:

sudo ditto /private/tmp /Volumes/MacintoshHD/private/tmp
sudo rm -rf /private/tmp
sudo ln -s /Volumes/MacintoshHD/private/tmp /private/tmp

Todo está bien, pero cuando reinicio, espero que la carpeta se vacíe como de costumbre. Sin embargo, descubrí que todos los archivos que estaban presentes en la ejecución del sistema operativo anterior todavía están presentes.

Supongo que cualquier secuencia de comandos que vacíe la carpeta / private / tmp se ejecuta antes de que se monte el HD magnético, lo que significa que el enlace que apunta a la carpeta tmp no apunta a ninguna parte y, por lo tanto, la eliminación fallida.

¿Alguna idea de cómo arreglar esto? ¿Alguna otra sugerencia para mover la carpeta / private / tmp a otra unidad y aún así conservar la eliminación automática?

    
pregunta Samric 20.12.2014 - 16:32

1 respuesta

1

Después de investigar un poco, terminé escribiendo un script de shell y utilizando launchd para que se ejecutara en el momento del arranque.

El script que uso (/usr/local/bin/empty-tmp.sh):

#!/bin/bash

# Delete files (other than directories) that haven't been modified in more than 1 day
find /Volumes/MacintosHD/private/tmp -not -type d -ctime +1d -delete

# Delete empty directores that have been created more than 1 day ago
find /Volumes/MacintoshHD/private/tmp -d -type d -empty -mindepth 1 -Btime +1d -delete

y la lista de propiedades (en / Library / LaunchDeamons):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.samric.emptytmp</string>

  <key>ProgramArguments</key>
  <array>
    <string>/bin/bash</string>
    <string>-c</string>
    <string>/bin/wait4path /Volumes/MacintoshHD/private/tmp/ && /usr/local/bin/empty-tmp.sh</string>
  </array>

  <key>RunAtLoad</key>
  <true/>

  <key>LaunchOnlyOnce</key>
  <true/>
  </dict>
</plist>

Ahora la clave está utilizando wait4path para asegurarse de que el HD secundario (MacintoshHD) esté correctamente montado antes de invocar el script. De lo contrario, el script no eliminará ningún archivo, ya que no será accesible.

    
respondido por el Samric 06.01.2015 - 21:21

Lea otras preguntas en las etiquetas