Je travaille sur un système de serveur qui ne me permet pas de stocker des fichiers de plus de 50 gigaoctets. Mon application prend 20 minutes pour générer un fichier. Est-il possible de déplacer tous les fichiers de plus de 30 minutes de la source vers la destination? J’ai essayé rsync
:
rsync -avP source/folder/ user@destiantionIp:dest/folder
mais cela ne supprime pas les fichiers de mon serveur et donc la limite de stockage échoue.
Deuxièmement, si j’utilise la commande mv
, les fichiers toujours générés sont également déplacés vers le dossier de destination et le programme échoue.
Vous pouvez utiliser find
avec -exec
pour cela: –
Remplacez /sourcedirectory
et /destination/directory/
par les chemins source et cible selon vos besoins.
find /sourcedirectory -maxdepth 1 -mmin -30 -type f -exec mv "{}" /destination/directory/ \;
En gros, la commande essaie de trouver dans le dossier -maxdepth 1
modifiés pour la dernière fois il y a 30 minutes -mmin -30
et de les déplacer vers le répertoire cible spécifié. Si vous souhaitez utiliser l’heure à laquelle le fichier a été utilisé pour la dernière fois, utilisez -amin -30
.
Ou si vous voulez trouver des fichiers modifiés dans une plage, vous pouvez utiliser quelque chose comme -mmin 30 -mmin -35
qui vous permettra d’obtenir les fichiers modifiés il y a plus de 30 minutes mais moins de 35 minutes.
Références de la page de manuel: –
-amin n File was last accessed n minutes ago. -atime n File was last accessed n*24 hours ago. When find figures out how many 24-hour periods ago the file was last accessed, any fractional part is ignored, so to match -atime +1, a file has to have been accessed at least two days ago. -mmin n File's data was last modified n minutes ago. -mtime n File's data was last modified n*24 hours ago. See the comments for -atime to understand how rounding affects the interpretation of file modification times.